CREATE DEFINER=`root`@`localhost` PROCEDURE `Code_Search_Code`(
c varchar(20), s int,out hs int)
begin
declare stmt varchar(2000);
set @sql = concat('select code from warehouse where code like ''%',c,'%'' limit 0,',s);
prepare stmt from @sql;
execute stmt;
set hs=FOUND_ROWS();
end;VB调用
Dim MyComm As New ADODB.Command '定义一个命令对象
With MyComm
.ActiveConnection = Conn '数据连接
.CommandText = "Code_Search_Code" '存储过程名称
.CommandType = adCmdStoredProc '表明这是一个存储过程
.Prepared = True '要求将SQL命令先行编译
.Parameters.Append .CreateParameter("@c", adVarChar, 1, 20, ReplaceStr(code_text.Text))
.Parameters.Append .CreateParameter("@s", adInteger, 1, 3, 6)
.Parameters.Append .CreateParameter("@hs", adInteger, 2)
.Execute
End With
红色部分为设置输出参数,可这句放进去就会出错,存储过程我试过是正常的,把这句去了再把存储中那个输出参数也去了,就能运行正常,说明就只错在这句的设置上,谁告诉我,怎么处理?
c varchar(20), s int,out hs int)
begin
declare stmt varchar(2000);
set @sql = concat('select code from warehouse where code like ''%',c,'%'' limit 0,',s);
prepare stmt from @sql;
execute stmt;
set hs=FOUND_ROWS();
end;VB调用
Dim MyComm As New ADODB.Command '定义一个命令对象
With MyComm
.ActiveConnection = Conn '数据连接
.CommandText = "Code_Search_Code" '存储过程名称
.CommandType = adCmdStoredProc '表明这是一个存储过程
.Prepared = True '要求将SQL命令先行编译
.Parameters.Append .CreateParameter("@c", adVarChar, 1, 20, ReplaceStr(code_text.Text))
.Parameters.Append .CreateParameter("@s", adInteger, 1, 3, 6)
.Parameters.Append .CreateParameter("@hs", adInteger, 2)
.Execute
End With
红色部分为设置输出参数,可这句放进去就会出错,存储过程我试过是正常的,把这句去了再把存储中那个输出参数也去了,就能运行正常,说明就只错在这句的设置上,谁告诉我,怎么处理?
dim rs as new adodb.recordset
set rs=MyComm.execute("call sp(11,2,@a);select @a ";
存储代码如下
CREATE DEFINER=`YsSoft_Sm`@`127.0.0.1` PROCEDURE `tt`(out `a` int(11))
BEGIN
set a=123;
END;调用代码如下 Dim MyComm As New ADODB.Command '定义一个命令对象
With MyComm
.ActiveConnection = Conn '数据连接
.CommandText = "tt" '存储过程名称
.CommandType = adCmdStoredProc '表明这是一个存储过程
.Prepared = True '要求将SQL命令先行编译
.Parameters.Append .CreateParameter("@a", adInteger, 2)
.Execute
End With
这样也都运行错误的
提示
升级到5.16也没有用,一样的提示
TRIGGER是什么都不知道,所以不可能有,我重新做了个测试用的存储过程
CREATE DEFINER=`YsSoft_Sm`@`127.0.0.1` PROCEDURE `tt`(out `a` int(11))
BEGIN
set a=123;
END;
这个@a一样不能输出,问题会出在哪?
With Comm
.ActiveConnection = Conn
.CommandText = "CALL tt(@a)"
.CommandType = &H1 'adCmdText
.Execute
.CommandText = "Select @a 'ReturnVal'"
Set objRs = .Execute
MsgBox objRs("ReturnVal")
End With
objRs.Close
Set objRs = Nothing
Set Comm = Nothing搜索了一下在一个老外论坛里看到的代码修改下,用这种方式能输出,郁闷