Board index » delphi » 255 Character Limit - D3/MSSQL 6.5

255 Character Limit - D3/MSSQL 6.5

I'm using D3 and MSSQL 6.5 Enterprise Edition and I have a problem when
I send more than 255 characters to a stored procedure in MSSQL.  I have
two fields defined as "Text" in MSSQL and I'm using TStoredProc with the
Params Data type set by Delphi as "String".  The two fields are Problem
and Solution which are Param 4 and 5 respectively.  In the first trace,
Problem.Text := "1234567890" and Solution.Text := "Solution Text".  With
this data the stored procedure works properly.

------8><  trace 1 start ><8-------

Param = 2, Name = @CallID, Type = fldINT32, Precision = 0, Scale = 0,
Data = 6983
Param = 3, Name = @RespLifeNo, Type = fldZSTRING, Precision = 4, Scale =
0, Data = 2501
Param = 4, Name = @Problem, Type = fldZSTRING, Precision = 10, Scale =
0, Data = 1234567890
Param = 5, Name = @Solution, Type = fldZSTRING, Precision = 14, Scale =
0, Data = Solution Text.
Param = 6, Name = @ProbDate, Type = fldTIMESTAMP, Precision = 0, Scale =
0, Data = 7/17/1998 12:7:0:0
Param = 7, Name = @SolDate, Type = fldTIMESTAMP, Precision = 0, Scale =
0, Data = 7/17/1998 12:6:0:0
Param = 8, Name = @Cat, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 5
Param = 9, Name = @SubCat, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 0
Param = 10, Name = @Stat, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 0
Param = 11, Name = @Pri, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 2
Param = 12, Name = @ResolveTime, Type = fldINT32, Precision = 0, Scale =
0, Data = 5
Param = 13, Name = @CallSiteID, Type = fldZSTRING, Precision = 3, Scale
= 0, Data = MTL
Reset
Set statement type
Result = dbo.uhd_HelpDeskCall;1 :@CallID, :@RespLifeNo, :@Problem,
:@Solution, :@ProbDate, :@SolDate, :@Cat, :@SubCat, :@Stat, :@Pri,
:@ResolveTime, :@CallSiteID,

------8><  trace 1 end ><8-------

In the next trace, Problem.Text := 123456789012 123456 for a total
of 256 characters.  Param 4 is not even seen in the trace and the MSSQL
stored procedure stores what seems to be three character pointer and the
data is lost.

------8><  trace 2 start ><8-------

Param = 1, Name = Result, Type = fldINT32, Precision = 0, Scale = 0,
Data = NULL
Param = 2, Name = @CallID, Type = fldINT32, Precision = 0, Scale = 0,
Data = 6983
Param = 3, Name = @RespLifeNo, Type = fldZSTRING, Precision = 4, Scale =
0, Data = 2501
Param = 5, Name = @Solution, Type = fldZSTRING, Precision = 14, Scale =
0, Data = Solution Text.
Param = 6, Name = @ProbDate, Type = fldTIMESTAMP, Precision = 0, Scale =
0, Data = 7/17/1998 12:7:0:0
Param = 7, Name = @SolDate, Type = fldTIMESTAMP, Precision = 0, Scale =
0, Data = 7/17/1998 12:6:0:0
Param = 8, Name = @Cat, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 5
Param = 9, Name = @SubCat, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 0
Param = 10, Name = @Stat, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 0
Param = 11, Name = @Pri, Type = fldZSTRING, Precision = 1, Scale = 0,
Data = 2
Param = 12, Name = @ResolveTime, Type = fldINT32, Precision = 0, Scale =
0, Data = 5
Param = 13, Name = @CallSiteID, Type = fldZSTRING, Precision = 3, Scale
= 0, Data = MTL
Reset
Set statement type
:Result = dbo.uhd_HelpDeskCall;1 :@CallID, :@RespLifeNo, :@Problem,
:@Solution, :@ProbDate, :@SolDate, :@Cat, :@SubCat, :@Stat, :@Pri,
:@ResolveTime, :@CallSiteID,

------8><  trace 2 end ><8-------

I have tried changing the Data type in Delphi but the data is still lost
when more than 256 characters are entered.  Using the SQL Query in MSSQL
I've been able to use the stored procedure and store more than 255
characters.

When I've used TQuery I never had a problem.  I'm assuming either I'm
not setting something correctly in the Delphi TStoredProc since it works
with the TQuery or there's a bug with TstoredProc.  Does anyone have any
ideas or come across this problem?

Thanks,

Mark Comeau
Lockheed Martin Canada
(514) 340-8310 x8600
mark.com...@lmco.com

 

Re:255 Character Limit - D3/MSSQL 6.5


Hi Comeau,
    The MSSQL procedure not support string with more 255 bytes. This problem
with may solve using any params with 255 bytes.

Good Luck,

ALAN CANDIDO
acand...@snet.com.br

Quote
Mark Comeau wrote in message <35B6623C.465E6...@lmco.ca>...
>I'm using D3 and MSSQL 6.5 Enterprise Edition and I have a problem when
>I send more than 255 characters to a stored procedure in MSSQL.  I have
>two fields defined as "Text" in MSSQL and I'm using TStoredProc with the
>Params Data type set by Delphi as "String".  The two fields are Problem
>and Solution which are Param 4 and 5 respectively.  In the first trace,
>Problem.Text := "1234567890" and Solution.Text := "Solution Text".  With
>this data the stored procedure works properly.

>------8><  trace 1 start ><8-------

>Param = 2, Name = @CallID, Type = fldINT32, Precision = 0, Scale = 0,
>Data = 6983
>Param = 3, Name = @RespLifeNo, Type = fldZSTRING, Precision = 4, Scale =
>0, Data = 2501
>Param = 4, Name = @Problem, Type = fldZSTRING, Precision = 10, Scale =
>0, Data = 1234567890
>Param = 5, Name = @Solution, Type = fldZSTRING, Precision = 14, Scale =
>0, Data = Solution Text.
>Param = 6, Name = @ProbDate, Type = fldTIMESTAMP, Precision = 0, Scale =
>0, Data = 7/17/1998 12:7:0:0
>Param = 7, Name = @SolDate, Type = fldTIMESTAMP, Precision = 0, Scale =
>0, Data = 7/17/1998 12:6:0:0
>Param = 8, Name = @Cat, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 5
>Param = 9, Name = @SubCat, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 0
>Param = 10, Name = @Stat, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 0
>Param = 11, Name = @Pri, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 2
>Param = 12, Name = @ResolveTime, Type = fldINT32, Precision = 0, Scale =
>0, Data = 5
>Param = 13, Name = @CallSiteID, Type = fldZSTRING, Precision = 3, Scale
>= 0, Data = MTL
>Reset
>Set statement type
>Result = dbo.uhd_HelpDeskCall;1 :@CallID, :@RespLifeNo, :@Problem,
>:@Solution, :@ProbDate, :@SolDate, :@Cat, :@SubCat, :@Stat, :@Pri,
>:@ResolveTime, :@CallSiteID,

>------8><  trace 1 end ><8-------

>In the next trace, Problem.Text := 123456789012 123456 for a total
>of 256 characters.  Param 4 is not even seen in the trace and the MSSQL
>stored procedure stores what seems to be three character pointer and the
>data is lost.

>------8><  trace 2 start ><8-------

>Param = 1, Name = Result, Type = fldINT32, Precision = 0, Scale = 0,
>Data = NULL
>Param = 2, Name = @CallID, Type = fldINT32, Precision = 0, Scale = 0,
>Data = 6983
>Param = 3, Name = @RespLifeNo, Type = fldZSTRING, Precision = 4, Scale =
>0, Data = 2501
>Param = 5, Name = @Solution, Type = fldZSTRING, Precision = 14, Scale =
>0, Data = Solution Text.
>Param = 6, Name = @ProbDate, Type = fldTIMESTAMP, Precision = 0, Scale =
>0, Data = 7/17/1998 12:7:0:0
>Param = 7, Name = @SolDate, Type = fldTIMESTAMP, Precision = 0, Scale =
>0, Data = 7/17/1998 12:6:0:0
>Param = 8, Name = @Cat, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 5
>Param = 9, Name = @SubCat, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 0
>Param = 10, Name = @Stat, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 0
>Param = 11, Name = @Pri, Type = fldZSTRING, Precision = 1, Scale = 0,
>Data = 2
>Param = 12, Name = @ResolveTime, Type = fldINT32, Precision = 0, Scale =
>0, Data = 5
>Param = 13, Name = @CallSiteID, Type = fldZSTRING, Precision = 3, Scale
>= 0, Data = MTL
>Reset
>Set statement type
>:Result = dbo.uhd_HelpDeskCall;1 :@CallID, :@RespLifeNo, :@Problem,
>:@Solution, :@ProbDate, :@SolDate, :@Cat, :@SubCat, :@Stat, :@Pri,
>:@ResolveTime, :@CallSiteID,

>------8><  trace 2 end ><8-------

>I have tried changing the Data type in Delphi but the data is still lost
>when more than 256 characters are entered.  Using the SQL Query in MSSQL
>I've been able to use the stored procedure and store more than 255
>characters.

>When I've used TQuery I never had a problem.  I'm assuming either I'm
>not setting something correctly in the Delphi TStoredProc since it works
>with the TQuery or there's a bug with TstoredProc.  Does anyone have any
>ideas or come across this problem?

>Thanks,

>Mark Comeau
>Lockheed Martin Canada
>(514) 340-8310 x8600
>mark.com...@lmco.com

Other Threads