关于存储过程的问题,请各位帮帮忙
有存储过程如下:
create procedure dbo.hy_user_insert
@username varChar(50),--用户名
@userpassword varchar(50),--用户密码
......
AS
begin
if exists(select id from hy_user where username=@username)
begin
select 0 as result
end
else
begin
INSERT into hy_user(
[username],--用户名
[userpassword],--用户密码
......
) VALUES(
@username,--用户名
@userpassword,
......
)
DECLARE @intnewid int
DECLARE @userid_ varchar(10)
set @intnewid=SCOPE_IDENTITY()
set @userid_=CAST(@intnewid AS VARCHAR(10))
WHILE len(@userid_) <10--生成自编号
set @userid_= '0 '+@userid_
update hy_user set userid=@userid_ where [id]=@intnewid
select u.*,1 as result from hy_user where [id]=@intnewid
end
end
=======================================
在查询分析器里面输入:
exec hy_user_insert 'test ', 'test ',...
可以返回结果
=======================================
在ASP中不能返回结果
代码:
=======================================
set objCmd=Server.CreateObject( "Adodb.Command ")
objCmd.ActiveConnection=conn
objCmd.CommandText= "hy_user_insert " '指定存储过程名称
objCmd.NamedParameters = true
objCmd.CommandType=adCmdStoredProc '其为Stored Procedure
'-----准备stored procedure 的参数-------
objCmd.Parameters.Append objCmd.CreateParameter( "@username ",adVarchar,adParamInput,50,username )
objCmd.Parameters.Append objCmd.CreateParameter( "@userpassword ",adVarchar,adParamInput,50,md5(password))
.......
'-----执行存储过程----------------------
set rs=server.CreateObject( "adodb.recordset ")
rs.open objCmd,,0,1
response.write rs.eof '这里显示true
result=rs( "result ") '这里出错,找不到字段
rs.close
set rs=nothing
set objCmd=nothing
CloseConn()
if result=0 then response.Write " <script language= 'javascript '> alert( '已存在相同名称的用户,请使用其他用户名。 ');history.go(-2); </script> ":response.End()
=======================================================
我想使用存储过程插入记录并返回新插入的记录
为什么我不能得到返回的结果?返回的rs是关闭的,为什么呢?
简单的说就是问不用游标的情况下怎么让存储过程插入记录并返回结果集
------解决方案--------------------关注
不过既然是respons