在使用存储过程中出现的有关字符超长的问题(200分)

  • 主题发起人 主题发起人 brokensun
  • 开始时间 开始时间
B

brokensun

Unregistered / Unconfirmed
GUEST, unregistred user!
在 MS SQL6.5 中建存储过程如下(CDataStore):
CREATE PROCEDURE CDataStore(@sqlstring text) AS EXEC (@sqlstring)

在 Delphi4 中建 TStoredProc,名为 SPSun:
SPSun.Params[1].DataType->ftBlob
SPSun.Params[1].Name->@sqlstring
SPSun.Params[1].ParamType->ptInput

有关函数如下(在TDMCall类中):
function TDMCall.DataProcess(pSQL: String):Boolean;
begin
Result:= False;
try
SPSun.ParamByName('@sqlstring').AsString:=pSQL;
SPSun.Prepare ;
SPSun.ExecProc ;
SPSun.UnPrepare ;
Result:= True;
except
on E: Exception do ShowMessage(E.Message);
end ;
end;

例:
Q:='UPDATE Table1 SET Field1=12,Field2=23 WHERE ID=1';
DataProcess(Q);

现有如下问题:
数据库为 MS SQL6.5 (当数据库为 MS SQL7.0 时,不会出现如下错误)
使用DBE通过ODBC访问数据
当Q长度大于255个字节后,ODBC出现右超长错误.

请问如位大虾,出现上面问题,是在下在哪犯了错误,该如何解决!
注: SPSun 一定要为通用存储过程,而不能为专用,否则无意义.
 
没人过问?
 
附加功能 将问题提前
 
改用BDE试一下
 
那就换高版本
 
试试这个!
CREATE PROCEDURE CDataStore(@sqlstring text) AS EXEC (<font color = #ff0000><strong>N</font></strong>@sqlstring)
 
用QUERY试试看看
"exec spname"
 
我的同事用VC写ODBC函数时碰到过你的问题(字节截断的问题),最后发现是版本太低的问题,他装了一个SQL SERVER7
的客户端后就没问题的(自动更新了驱动程序),要不装SQL SERVER7的话,你就要自己安装最新
的ODBC驱动
 
brokensun:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部