关于存储过程返回值问题,

battlet 2003-02-14 12:47:00
现有存储过程如下:
create procedure usp_checkSerialNoExist
@serialNo_input int,
@isExist int output
as
begin
if exists(select 1 from tbl1 where Sno = @serialNo_input)
set @isExist = 1
else
set @isExist = 0
end
go

我在vb中用:
str_sql_checkExist = "usp_checkSerialNoExist " + i_sno + "," + i_isExist
db.execute (str_qsl_checkExist)
但为什么i_isExist其值没有做相应变化,
存储过程中的output的变量是不是这样取得的?(vb中怎么将外部的变量传入存储过程中去)
...全文
21 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
battlet 2003-02-15
  • 打赏
  • 举报
回复
我现在的程序如下:
while (not eof)
serialno_input = fields(0) 'get input info ,ok.
Set cmd.ActiveConnection = cnn
cmd.CommandType = adcmdstoredprocedure
cmd.CommandText = "usp_checkSerialNoExist"
Set param1 = cmd.CreateParameter("@SerialNo_input", adVarChar, adParamInput, 50, serialno_input)
Set param2 = cmd.CreateParameter("@isExist", adInteger, adParamOutput)
cmd.Parameters.Append param1
cmd.Parameters.Append param2
cmd.Execute
i_checkNoExist_retVal = 255
i_checkNoExist_retVal = CInt(param2) '得到你想要的返回值

但不知道为什么只有第一次取得的结果(1或0)是正确的,后面的输出
变量(i_checkNoExist_retVal)总是0不变了,不知道什么,各位帮我分析一下吧,谢谢了
yelook 2003-02-14
  • 打赏
  • 举报
回复
不是这样取的呀
给你个例子吧
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = cn
with cmd
.CommandType = adCmdStoredProc
.CommandText = "customer_addnew"
.parameters.append .createParameter("@khmc",adVarChar,adParamInput,80)
cmd("@khmc") = khmc
.execute
end with

if cmd.parameters("@out")=0 then
...
changechange 2003-02-14
  • 打赏
  • 举报
回复
接着问个问题,存储过程如果有两个数据集,再查询分析器里面调试的时候可以同时得到两个数据集的结果,并显示。

但是我要用rs接收,怎么同时接收2个数据集啊?

create procedure p_us_aa
as
begin
select * from a
select * from b
end
go
DimVar 2003-02-14
  • 打赏
  • 举报
回复
同意 yelook(雨枫)
battlet 2003-02-14
  • 打赏
  • 举报
回复
哦,这样的阿,非常感谢~
我试试看

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧