最近在给老程序(VB6+SQL2005)添加数据库备份、恢复功能。以前没写是因为太懒。在使用ado Command调用存储过程sp_addumpdevice时,发现存储过程有返回值(0——成功,1——失败)。但按照之前的书写格式,把结果声明了一个参数,放在所以传入参数的后面,也提示错误。就提示@cntrltype未声明为OUTPUT,则形参需要输出的类似错误。
查看了sp_addumpdevice定义,发现@cntrltype、@devstatus这两个参数都可以为空,不用传入。
度娘了一圈,也没有发现怎么解决这个问题。我还按照sp_addumpdevice的定义,声明了5个参数,但提示错误。
没想到瞎写了一下,居然了没报错。
正确代码如下:
P_cmd.CommandType = adCmdStoredProc
P_cmd.CommandText = "sp_addumpdevice"
With P_cmd
.Parameters.Append .CreateParameter("@res", adInteger, adParamReturnValue, , i)
.Parameters.Append .CreateParameter("@devtype", adChar, adParamInput, 20, "disk")
.Parameters.Append .CreateParameter("@logical", adChar, adParamInput, 40, "mybakdev1")
.Parameters.Append .CreateParameter("@physical", adChar, adParamInput, 260, Trim(txtData_Backup(0).Text))
.Execute
'<释放参数>
.Parameters.Delete ("@devtype")
.Parameters.Delete ("@logical")
.Parameters.Delete ("@physical")
.Parameters.Delete ("@res")
End With