关于存储过程的(100分)

  • 主题发起人 主题发起人 路过蜻蜓
  • 开始时间 开始时间

路过蜻蜓

Unregistered / Unconfirmed
GUEST, unregistred user!
我在SqlServer2000里写了一个存储过程为:
CREATE PROCEDURE dbo.p_AAAAA
@li_year int ,
@li_month int ,
@error_code int output,
@error_text nvarchar output
AS
BEGIN
update t_staff set password = '5555' where staff_id = -1
select @error_code = 11111
set @error_text = '6666'
END
我在Delphi6里写了一段程序,目的是得到@error_Code和@error_text的值
procedure TForm1.Button1Click(Sender: TObject);
Var
StrAdoQuery : String;
x :String;
begin
StrAdoQuery :='declare @error_code integer,@error_text varchar '+
'execute p_AAAAA 2002,4,'+
'@error_code output,'+
'@error_text output'+
' select @error_code,@error_text ';
With AdoQuery Do
Begin
AdoQuery.Close;
Adoquery.SQL.Clear;
AdoQuery.SQL.Add(StrAdoQuery);
AdoQuery.open;
Edit1.Text := AdoQuery.Fields[0].AsString ;
Edit2.Text := AdoQuery.Fields[1].AsString;
End;
end;
为什么Edit2.text 的值只能得到一个字节的值呢,只要是字符型的变量就只能得到一个字
节,比如现在,Edit2.text 就为6,为什么不为6666,请大哥哥门帮帮我。
 
直接用ADOStoredProc不就可以了吗?
adostoreedproc.execsql;
Edit1.Text := inttostr(AdoQuery.params.parambyname('@error_code).value);
Edit2.Text := AdoQuery.params.parambyname('@error_text').value;
 
我试了,ADOStoredProc也是一样的。还是不行。
我想最好用AdoQuery
 
用INT,或CHAR(6)
 
我要解决的是在AdoQuery下的,我不用ADOStoredProc,char(6)不能解决AdoQuery的啊,
求大哥门在帮帮。
 
你把存储过程的代码写到控件里,然后再设置参数的类型是字符串,再试试
 
你试一试把@error_text 设为varchar(4)类型试试
 
1.存储过程使用字符串来连接。
2,定义@error_text的varchar(_)
 
直接用ADOStoredProc

在SqlServer2000里写了一个存储过程为:
CREATE PROCEDURE dbo.p_AAAAA
@li_year int ,
@li_month int ,
@error_code int output,
@error_text varchar(10) output // 字符串宽度
AS

在ADOStoredProc中创建时 @error_text varchar(10) output //
字符串宽度要一致 .[:D]我试过了,ok

 
哎,大哥门拉,不用ADOStoredProc,因为老大说了,不能用它。
我也知道用ADOStoredProc可以解决了。
我必须得用AdoQuery,用AdoQuery 怎么解决呢??
varchar(4)我也试过了,还是不行啊。
 
多人接受答案了。
 
后退
顶部