本帖最后由 bob 于 2011-6-16 10:25 编辑
5. 同时具有返回值、输入参数、输出参数的存储过程
存储过程CREATE PROCEDURE getFname2
@emp_id char(9),
@fname varchar(20) output
as
set nocount on
begin
if @emp_id is null return
select @fname=fname from employee where emp_id=@emp_id
if @@rowcount>0 --@@rowcount返回上一语句受影响的行数
return 1
else
return 0
return
end
go
au3代码
Dim $sServer = '192.168.1.249', $sUsername = 'sa', $sPassword = '',$sDatabase = 'Pubs' ;四个变量分别是连接数据库用的地址、账号、密码及所使用数据库名
$empid = 'F-C16315M'
$Comm = ObjCreate("ADODB.Command") ;建一个command对象
With $Comm
.ActiveConnection = "DRIVER={SQL Server};SERVER=" & $sServer & ";UID=" & $sUsername & ";PWD=" & $sPassword & ";Database=" & $sDatabase & "" ;建立连结
.CommandText = 'getFname2' ;定义command 对象调用名称,即存储过程名称
.CommandType = 4 ;设置command调用类型是存储过程
.Prepared = True ;将SQL命令先行编译
.Parameters.Append (.CreateParameter("RETURN",2,4)) ;返回值要最先被声明
.Parameters.append (.CreateParameter('@emp_id',129,1,9,$empid))
.Parameters.append (.CreateParameter('@fname',200,2,20))
.Execute
EndWith
;获取输出
If $Comm(0).value = 1 then
MsgBox(0,'输入'&$Comm(1).value, '输出'&$Comm(2).value)
else
MsgBox(0,'错误提示','对应输入在数据库不存在')
EndIf
在以上代码中,可以看到,与声明返回值不同,
声明输入参数时需要5个参数,声明输出参数时需要4个参数。
声明输入参数时5个参数分别为:参数名、参数数据类型、参数类型、数据长度、参数值。
声明输出参数时,没有最后一个参数:参数值。
需要特别注意的是:在声明参数时,顺序一定要与存储过程中定义的顺序相同,而且各参数的数据类型、长度也要与存储过程中定义的相同。 |