最近在给老程序(VB6+SQL2005+水晶报表)添加备份、恢复数据库功能。真心是手动备份数据库太劳累,且显得不专业,呵呵。调用sp_addumpdevice过程时,发生这SP有返回值,度娘了一圈,很少有提出存储过程返回值如何在ADO Command中如何引用。
瞎写的代码,总是提示:@cntrltype未声明为OUTPUT,但形参还需要输出,等等。
但打开sp_addumpdevice存储过程定义,发现@cntrltype及@devstatus可为空,不需要传值。头疼了10分钟。
无意间瞎写,则不报错了。
正确代码如下:
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