with M_DataModule.ADOQuery do
begin
close;
sql.Clear;
parameters.Clear;
Sql.Add('Exec sp_Adm_Login "001","001"');
parameters.CreateParameter('@Return_Value',ftinteger,pdReturnValue,0,0);
Execsql;
showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
end;
存储过程输入参数 001 001 之后 Return值应为1 (查询分析器里测试过)
为什么上面的程序得到的值是0,求大家帮忙 我的存储过程如下:
/*
功能描述:判断给定的@Ad_ID nvarchar(3),@Ad_Password nvarchar(20)是否为合法用户.
参数表:@Ad_ID nvarchar(3),@Ad_Password nvarchar(20)
返回值:若用户名或密码为空返回-1,为合法用户返回1,否则返回0。*/
CREATE PROCEDURE sp_ADM_Login
@Ad_ID nvarchar(3),
@Ad_Password nvarchar(20)
AS
if @Ad_ID='' or @Ad_Password=''
return -1
select * from admin where Ad_id=@ad_id and Ad_Password=@Ad_Password
if @@rowcount<>0
return 1
else
return 0
GO
begin
close;
sql.Clear;
parameters.Clear;
Sql.Add('Exec sp_Adm_Login "001","001"');
parameters.CreateParameter('@Return_Value',ftinteger,pdReturnValue,0,0);
Execsql;
showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
end;
存储过程输入参数 001 001 之后 Return值应为1 (查询分析器里测试过)
为什么上面的程序得到的值是0,求大家帮忙 我的存储过程如下:
/*
功能描述:判断给定的@Ad_ID nvarchar(3),@Ad_Password nvarchar(20)是否为合法用户.
参数表:@Ad_ID nvarchar(3),@Ad_Password nvarchar(20)
返回值:若用户名或密码为空返回-1,为合法用户返回1,否则返回0。*/
CREATE PROCEDURE sp_ADM_Login
@Ad_ID nvarchar(3),
@Ad_Password nvarchar(20)
AS
if @Ad_ID='' or @Ad_Password=''
return -1
select * from admin where Ad_id=@ad_id and Ad_Password=@Ad_Password
if @@rowcount<>0
return 1
else
return 0
GO
Sql.Add('Exec sp_Adm_Login '''001''','''001'''');
应该是两个单引号.......老大
Sql.Add('Exec sp_Adm_Login ''00'',''00''');
==============>
showmessage(inttostr(Parameters.FieldByName(@Return_Value).Value));
你看看这样呢
begin
Close;
ProcedureName:='sp_Adm_Login';
Parameters.Refresh;
Parameters.ParamByName('@Ad_ID').Value:='009';
Parameters.ParamByName('@Ad_Password').Value:='009';
Parameters.CreateParameter('@Return_Value',ftinteger,pdReturnValue,0,0);
ExecProc;
end;
======================
提示:为存储过程sp_Adm_Login指示太多的参数...
谁能给个ADOStoredProc调用存储过程sp_Adm_Login'并得到返回值的例子...
begin
close;
sql.Clear;
Sql.Add('Exec sp_Adm_Login '''001''''+','+'''001'''');
Execsql;
showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
end;
begin
close;
sql.Clear;
Sql.Add('Exec sp_Adm_Login '+Quotedstr('001')+','+Quotedstr('001'));
open;
showmessage(fields[0].asstring);
end;
begin
close;
sql.Clear;
parameters.Clear;
parameters.CreateParameter('@Return_Value',ftinteger,pdReturnValue,0,0);//这句放错了位置
Sql.Add('Exec sp_Adm_Login "001","001"');
Execsql;
showmessage(inttostr(Parameters.ParamByName('@Return_Value').Value));
end;