导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

怎么得到存储过程中的返回值?

kelichen 广东鸿联九五信息产业有限公司 研发部门经理  2003-01-11 10:59:01
我的存储过程中在操作完成后用了:
return 0

我用ASP调用这个存储过程,测试结果存储执行正确,但是我却无法得到这个0
调用的代码如下:
set comm=server.createobject("adodb.command")
With comm
.ActiveConnection=conn
.CommandText="lc_add"
.CommandType=adCmdStoredProc
.Parameters.Append .CreateParameter("@fieldlist",advarchar,adParamInput,300,fieldlist)
.Parameters.Append .CreateParameter("@valuelist",advarchar,adParamInput,4000,valuelist)
.Parameters.Append .CreateParameter("@id",adInteger,adParamInput,5,ID)
End With

set changehouse=comm.Execute()
response.write changehouse
...全文
10 点赞 收藏 22
写回复
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-01-11
楼主的人品好!
学习!!
回复
kelichen 2003-01-11
谢谢各位的帮助,我已经解决这个问题了,问题是我之前的调用方法错误,把我现在的调用方法贴出来给大家参考吧:
set comm=server.createobject("adodb.command")
With comm
.ActiveConnection=conn
.CommandText="lc_add"
.CommandType=adCmdStoredProc
.Parameters.Append .CreateParameter("@return_value",adInteger,adParamReturnValue )
.Parameters.Append .CreateParameter("@fieldlist",advarchar,adParamInput,300,fieldlist)
.Parameters.Append .CreateParameter("@valuelist",advarchar,adParamInput,4000,valuelist)
.Parameters.Append .CreateParameter("@id",adInteger,adParamInput,5,ID)
.Execute()
End With
changehouse=comm("@return_value")
response.Write changehouse
set comm=nothing
回复
XLYT 2003-01-11
在存储过程里对要输出的参数加上OUTPUT,然后调用ADO.COMMAND,在createparameter的时候指出该参数需要output。
回复
kelichen 2003-01-11
to CABO(白椒腊肉):其实我就是不想这么麻烦,我想应该是可以在asp里调用的时候直接得到:
return 0
里的这个"0"的,我想我这个问题可能放到ASP版里去可能更合适些了.
回复
kelichen 2003-01-11
哦...错了.
应该是:
CREATE PROCEDURE lc_add
@fieldlist varchar(300),
@valuelist varchar(5000),
@id int,
@a int output

select @a=0
回复
kelichen 2003-01-11
to cmsoft(韦小宝是我的老乡):按照你的这个方法,我的存储过程中是不是还要设定一个输出参数:
select @a=exec @sql

???
回复
CABO 2003-01-11
我不懂ASP,不知道在ASP中怎么返回,你可以看看其它兄弟写的
不过,如果这样执行
declare @A as int
exec @a=aaaa
select @a as b

将返回值作为一个记录集返回,然后访问字段‘B'的值,应该可以得到返回值
回复
cmsoft 2003-01-11
try it and you'll get it
回复
kelichen 2003-01-11
to cmsoft(韦小宝是我的老乡):你这个好象是输出参数不是返回值吧?我不知道是不是我之前的理解有问题,我的理解是返回值是不用这样指定的.
回复
cmsoft 2003-01-11
response.write comm.Parameters("@a")
回复
cmsoft 2003-01-11
我都帮你写出了,也不看一下啊~~
回复
kelichen 2003-01-11
to CABO(白椒腊肉):我刚才在查询分析器里试了,能够返回"0".我想我现在的问题应该是怎么在ASP调用中得到这个"0"了
回复
pengdali 2003-01-11
当然可以,使用command对象
set objCmd = server.createobject("adodb.command")
objCmd.CommandText = "sp_yoursp"
objCmd.CommandType = adCmdStoredProc
objCmd.ActiveConnection = objConn '--数据库连接对象
objCmd.Parameters.Refresh
'--假定有两个参数,参数2为output
objCmd(1)=x
objCmd.Execute
response.write objCmd(2) '--直接使用objCmd(2)即可
回复
cmsoft 2003-01-11
set changehouse=comm.Execute() '这个是创建一个记录集对象
response.write changehouse '这个是输出这个对象,我不知道这句话的意思

一般要返回的参数是@a的话

n=cmd.Parameters("@a") 'cmd是commmand对象
回复
pengdali 2003-01-11
转贴:
Set MYCOM = New ADODB.Command
Set fhz = New ADODB.Parameter

fhz.Type = adInteger
fhz.Direction = adParamReturnValue
MYCOM.Parameters.Append fhz

Set yhm1 = New ADODB.Parameter
yhm1.Value = Text3.Text
yhm1.Type = adVarChar
yhm1.Size = 10
yhm1.Direction = adParamInput
MYCOM.Parameters.Append yhm1

Set mm1 = New ADODB.Parameter
mm1.Value = Text2.Text
mm1.Type = adVarChar
mm1.Size = 12
mm1.Direction = adParamInput
MYCOM.Parameters.Append mm1

Set dw1 = New ADODB.Parameter
dw1.Value = Combo3.Text
dw1.Type = adVarChar
dw1.Size = 12
dw1.Direction = adParamInput
MYCOM.Parameters.Append dw1

MYCOM.ActiveConnection = cnn
MYCOM.CommandText = "p_chkpwd_dd "
MYCOM.CommandType = adCmdStoredProc
Dim hhh As Integer
Set rs = MYCOM.Execute()
回复
saucer 2003-01-11
try something like

.Parameters.Append .CreateParameter("RETURN_VALUE", adInteger,
adParamReturnValue,4)


comm.Execute()

n = comm.Parameters("RETURN_VALUE")
回复
CABO 2003-01-11
create procedure aaaa
as
return(6)

declare @A as int
exec @a=aaaa
select @a /*返回值*/
回复
kelichen 2003-01-11
to cmsoft(韦小宝是我的老乡) :那就希望你先告诉我该怎么做了然后再笑好吗?不胜感激!
回复
kelichen 2003-01-11
to CABO(白椒腊肉):怎么测试?我只会在查询分析器中执行存储过程,但是我不知道如何得到返回值

to CoolAbu(程序员跟GF不兼容(★★★★)):我将值在查询分析器中执行了,没有报错,直接在ASP里运行也得出了执行结果。但是我现在需要在执行正确后返回一个操作完成的数值来
回复
cmsoft 2003-01-11
set changehouse=comm.Execute()
response.write changehouse
这个代码能得出返回值?搞笑
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告