初学DELPHI,很多地方不懂,最近被一个问题困扰了很久,望各位大虾相助!写一个用户登陆部件,根据用户输入的ID和密码,搜索数据库判断,如果正确就返回UserNO,不正确就返回0存储过程如下:
CREATE PROCEDURE spLogin
(
@parUserID varchar(50),
@parUserPwd varchar(50)
)
AS
DECLARE @UserNO int
DECLARE @Row int SELECT @UserNO=UserNO
FROM TUser
WHERE UserID=@parUserID
AND UserPwd=@parUserPwd
IF(@UserNO=0)
RETURN 0
SELECT @Row=@@Rowcount
IF(@Row>0)
RETURN @UserNO
GO1.本人使用ADOStoredProc组件,在设置Parameters属性时,参数的Value一栏不知如何填,我试着为参数@parUserID和=@parUserPwd填上Edit1.text和Edit2.text,但还有一个@return_Value就不知如何填了。2.在代码方面就这样写,不知对不对,
ADOStoredProc1.Parameters.Clear;
ADOStoredProc1.Parameters.ParamByName('@parUserID').value:=edit1.text;
ADOStoredProc1.Parameters.ParamByName('@parUserPwd').value:=edit2.text;
ADOStoredProc1.Prepared:=true;
ADOStoredProc1.ExecProc;
但如何取得过程返回的UserNO或0呢? 这个问题是很菜,但已经快要把我搞到发疯了。希望各位大虾搭救一下,不胜感激!(最好详细点)再谢!
CREATE PROCEDURE spLogin
(
@parUserID varchar(50),
@parUserPwd varchar(50)
)
AS
DECLARE @UserNO int
DECLARE @Row int SELECT @UserNO=UserNO
FROM TUser
WHERE UserID=@parUserID
AND UserPwd=@parUserPwd
IF(@UserNO=0)
RETURN 0
SELECT @Row=@@Rowcount
IF(@Row>0)
RETURN @UserNO
GO1.本人使用ADOStoredProc组件,在设置Parameters属性时,参数的Value一栏不知如何填,我试着为参数@parUserID和=@parUserPwd填上Edit1.text和Edit2.text,但还有一个@return_Value就不知如何填了。2.在代码方面就这样写,不知对不对,
ADOStoredProc1.Parameters.Clear;
ADOStoredProc1.Parameters.ParamByName('@parUserID').value:=edit1.text;
ADOStoredProc1.Parameters.ParamByName('@parUserPwd').value:=edit2.text;
ADOStoredProc1.Prepared:=true;
ADOStoredProc1.ExecProc;
但如何取得过程返回的UserNO或0呢? 这个问题是很菜,但已经快要把我搞到发疯了。希望各位大虾搭救一下,不胜感激!(最好详细点)再谢!
也不要设置
Delphi代码:
with ADOStoredProc1 do
begin
close;
Parameters.ParamValues['@paruserID'] := edit1.text;
Parameters.ParamValues['@paruserpwd'] := edit2.text;
ExecProc;
end;最后郑重说明:你的存储过程写的糟糕啊
CREATE PROCEDURE spLogin
(
@parUserID varchar(50),
@parUserPwd varchar(50)
)
AS
Declare @values varchar(20),
@counts int
SELECT UserNO,@counts = count(*)
FROM TUser
WHERE UserID=@parUserID
AND UserPwd=@parUserPwd
if @counts = 0
@values = '0'
else
@values = UserNo
Select @values
GO
试一下(我还没试,不知道对不)
在Select userNo,@sconts = count(*) 前加:set nocount no
在select @values 前加:set nocount off
只是,在代码方面如何取得这个@values值?
with form1.adostoredproc1 do
begin
close;
procedurename:='mywage';
parameters.Clear;
parameters.CreateParameter('@lnmonth',ftInteger,pdinput,8,0);
Parameters.ParamByName('@lnmonth').Value :=mm-1;
try
open; except
Application.MessageBox('连接数据库失败','系统提示',mb_OK);
Application.Terminate;
end
end;----------------存储过程:mywage--------------------------
CREATE PROCEDURE mywage @lnmonth int
AS
select a.nameid,a.name,(year(getdate())-year(a.workage)+1)*5 as gl,b.dagz,b.gjj,b.ydj,
case a.rank
when '技术员' then 20
when '助工' then 50
when '工程师' then 80
when '高工' then 100
end as zz
from human a left join wage b on a.nameid=b.nameid and b.wagemonth=@lnmonth
GO
RETURN 返回的使用存储过程的参数来处理,这个参数的类型是返回值类型的,存储过程执行完成之后,就可以获取这个参数值,这个参数中已经存放了存储过程的返回值了。SELECT 需要 OPEN 这个结果集,按照 DATASET 来处理。
小弟最想知道的是取返回值的那一条语句怎样写!