关于ADOQUERY调用SQL SERVER 里的存储过程的问题....
ADOQUERY调用SQL SERVER 里的存储过程的时,,,存储过程的返回值,程序要怎么去捕捉它.!?
我的存储过程如下:
/*
功能描述:判断给定的@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
with M_DataModule.ADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Exec sp_Adm_Login "'+User_ComboBox.Text+'","'+Pass_Edit.Text+'"');
Parameters.CreateParameter('@Retrun_Value',ftinteger,pdReturnValue,0,0);
ExecSql;
Showmessage(inttostr(Parameters.ParamByName('@Retrun_Value').Value));
end;
可是这样取到的返回值每次都是0.
显然这种方法有错...
有哪位大哥能指点一下是哪错了!??????????????????
问题点数:20、回复次数:11Top
1 楼yonge23(东方一剑)回复于 2005-04-14 20:54:43 得分 0
在线等...有人知道吗!~??????????????????Top
2 楼yonge23(东方一剑)回复于 2005-04-14 21:28:58 得分 0
郁闷ING.../Top
3 楼feizi10512(小米飞子)回复于 2005-04-14 21:34:41 得分 0
顶~我也遇到了这个问题..........
望高手指点~~~~~~~~~~~~~~~~~Top
4 楼yonge23(东方一剑)回复于 2005-04-14 22:46:44 得分 0
救命啊....Top
5 楼yonge23(东方一剑)回复于 2005-04-15 10:48:46 得分 0
咋地没人救命啊.Top
6 楼squaref(江南雨狐)回复于 2005-04-18 22:05:03 得分 5
你在表单上用一个adoprocedure,对应属性里选择你的存储过程,然后点击一下属性里的parameters,点开之后,把最上面的@returnvalue删掉;然后你就直接对这个adoprocedure操作就行;
比如:with adoprocedure do
begin
Parameters.ParamByName('@...').Value := ..
Parameters.ParamByName('@...').Value := ..
Execproc; //or open;
end;Top
7 楼feizi10512(小米飞子)回复于 2005-04-19 09:00:53 得分 5
TO:Squsref
能否告知一下用ADOQuery如何得到存储过程的Return值.Top
8 楼huanyi(残荷淡月)回复于 2005-04-19 10:26:05 得分 0
试试ADOQuery.fields[0].asintegerTop
9 楼feizi10512(小米飞子)回复于 2005-04-19 13:09:01 得分 0
不行,这是第一个字段的值.Top
10 楼squaref(江南雨狐)回复于 2005-04-20 07:24:01 得分 5
你返回的是return的值,那你先不要把@return那个返回值删掉看看呢;然后用fields[0].value获取看看;Top
11 楼dreamover(梦醒了〖http://hellfire.cn〗)回复于 2005-04-20 08:48:19 得分 5
(江南雨狐) 什么乱七八糟的,
你答的好像和人问的不是一回事吧Top




