存储过程的返回值问题!

nforcedzh 2003-08-22 10:14:35
对于存储过程的返回值,在VB6.0中怎样取出来?
例如:一个存储过程的代码如下
CREATE PROCEDURE get @gt int output
AS
select @gt=123
return @gt
GO
在VB调用这个存储过程:SQLDB.Execute "get '" & s & "'"
关键是怎么把返回值取出来?如果能取出来,应该怎么写?
...全文
32 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nforcedzh 2003-08-25
  • 打赏
  • 举报
回复
这是一个简单的问题,各位是不是想的太复杂了
总结一下取返回值两种方法:
1.select 存储过程=返回值
2.select RetValue=返回值
但是对RetValue还不是很了解,如果哪位知道给我发短消息过来
还是很感谢各位的参与,结贴!
aierong 2003-08-25
  • 打赏
  • 举报
回复
Dim con As ADODB.Connection
Dim com As ADODB.Command

Private Sub Form_Load()
'先打开数据库,代码省了
con.Open

Set com = New ADODB.Command
com.ActiveConnection = con
com.CommandText = "get"
com.CommandType = adCmdStoredProc
com.Parameters.Append com.CreateParameter("@gt", adInteger, adParamOutput)
MsgBox com.Parameters("@gt")
End Sub

com.Parameters("@gt")就是你要的返回值
fayifu 2003-08-25
  • 打赏
  • 举报
回复
USE pubs
GO
CREATE PROCEDURE myProc
@outparm int OUTPUT
@inparm int
AS
SELECT * FROM titles WHERE royalty > @inparm
SELECT @outparm = COUNT (*) FROM TITLES WHERE royalty > @inparm
IF (@outparm > 0)
RETURN 0
ELSE
RETURN 99
GO

An ADO code program that executes the stored procedure myProc is shown here.

Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim fldloop As ADODB.Field
Dim param1 As Parameter, param2 As Parameter, param3 As Parameter
Dim provStr As String
Dim royalty As Variant

Private Sub spStart()

' Connect using the SQLOLEDB provider.
cn.Provider = "sqloledb"

' Specify connection string on Open method.
provStr = "Server=MyServer;Database=pubs;Trusted_Connection=yes"
cn.Open provStr

' Set up a command object for the stored procedure.
Set cmd.ActiveConnection = cn
cmd.CommandText = "myProc"
cmd.CommandType = adCmdStoredProc

' Set up a return parameter.
Set param1 = cmd.CreateParameter("Return", adInteger, adParamReturnValue)
cmd.Parameters.Append param1

' Set up an output parameter.
Set param2 = cmd.CreateParameter("Output", adInteger, adParamOutput)
cmd.Parameters.Append param2

' Set up an input parameter.
Set param3 = cmd.CreateParameter("Input", adInteger, adParamInput)
cmd.Parameters.Append param3
royalty = Trim(InputBox("Enter royalty:"))
param3.Value = royalty

' Execute command, and loop through recordset, printing out rows.
Set rs = cmd.Execute

Dim i As Integer
While Not rs.EOF
For Each fldloop In rs.Fields
Debug.Print rs.Fields(i)
i = i + 1
Next fldloop
Debug.Print ""
i = 0
rs.MoveNext
Wend

' Need to close recordset before getting return
' and output parameters.
rs.Close

Debug.Print "Program ended with return code: " & Cmd(0)
Debug.Print "Total rows satisfying condition: " & Cmd(1)
cn.Close

End Sub
fayifu 2003-08-23
  • 打赏
  • 举报
回复
create proc get
as
declare @gt int
set @gt = 6

select RetValue = @gt
go

执行上述存储过程将返回一个结果集,按查询表时返回结果集的取值方法就可取回值了(字段名为"RetValue")
nforcedzh 2003-08-22
  • 打赏
  • 举报
回复
提示有问题!
txlicenhe 2003-08-22
  • 打赏
  • 举报
回复
CREATE PROCEDURE get @gt int
AS
select @gt=123
GO


dim rs as new adodb.recordset
rs.open "exec get " & s,conn


rs.fields(0)即为所需。

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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