近用学习DELPHI,关于直接调用存储过程并返回值看了老半天,也没有弄明白,
发贴求助,谢谢表tb如下:
用户名 密码
a a
b b存储过程sp_1如下:
CREATE PROCEDURE sp_1
@a varchar(50)
AS
begin
select * from tb where 用户名=@a
end
GOdelphi中需要使用哪些控件,怎么调用sp_1,直接在DBGRID1中显示出相应的查询结果。不知道我写的清楚不清楚,谢谢
发贴求助,谢谢表tb如下:
用户名 密码
a a
b b存储过程sp_1如下:
CREATE PROCEDURE sp_1
@a varchar(50)
AS
begin
select * from tb where 用户名=@a
end
GOdelphi中需要使用哪些控件,怎么调用sp_1,直接在DBGRID1中显示出相应的查询结果。不知道我写的清楚不清楚,谢谢
FSP:= TADOStoredProc.Create(nil);
FSP.ProcedureName:='存储过程名';
FSP.Connection:=ADO链接对象
with FSP.Parameters.AddParameter do
begin
Name:='@RETURN_VALUE';
DataType := ftInteger;
Direction := pdReturnValue;
Precision := 10;
end;
with FSP.Parameters.AddParameter do
begin
Name:='@OID';
DataType := ftGuid;
Value:='值';
end;
FSP.ExecProc;
if FSP.Parameters.ParamByName('@RETURN_VALUE').Value='-1' then
begin
Exit;
end;
FSP.Open;
var
FSP:TADOStoredProc;
FADOConnection:TADOConnection;
begin
FADOConnection:=TADOConnection.Create(nil);
FSP:= TADOStoredProc.Create(nil);
try
FADOConnection.LoginPrompt:=False;
FADOConnection.ConnectionString:='';
try
FADOConnection.Open;
FSP.ProcedureName:='sp_1';
FSP.Connection:=FADOConnection;
with FSP.Parameters.AddParameter do
begin
Name:='@RETURN_VALUE';
DataType := ftInteger;
Direction := pdReturnValue;
Precision := 10;
end;
with FSP.Parameters.AddParameter do
begin
Name:='@a';
DataType := ftString;
Size:=50;
Value:='test';
end;
FSP.ExecProc;
if FSP.Parameters.ParamByName('@RETURN_VALUE').Value='-1' then
begin
Exit;
end;
FSP.Open;
except
end;
finally
if FSP.Active then FSP.Close;
FreeAndNil(FSP);
if FADOConnection.Connected then FADOConnection.Close;
FreeAndNil(FADOConnection);
end;
end;
@a varchar(50)
AS
begin
select * from tb where 用户名=@a
end
GO @a 是参数,执行时,需要传入,
TADOStoredProc,是执行存储过程的,ADOQuery也可以的
在delphi中,存储过程中的参数需要先创建,所以就有了FSP.Parameters.AddParameter hidelphi 写得很想写了,可以给分了