用VB去调用存储过程的问题
SQL code
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
红色部分为设置输出参数,可这句放进去就会出错,存储过程我试过是正常的,把这句去了再把存储中那个输出参数也去了,就能运行正常,说明就只错在这句的设置上,谁告诉我,怎么处理?
------解决方案--------------------提示什么
------解决方案--------------------.Parameters.Append .CreateParameter("@hs", adInteger, 2)
这里需要设置成out吧,没环境,测试部了。
另外一个办法就是你直接
dim rs as new adodb.recordset
set rs=MyComm.execute("call sp(11,2,@a);select @a ";
------解决方案--------------------将MYSQL ODBC升级到5.1.6试试,此表有TRIGGER?
------解决方案--------------------没有办法,只能使用这种方法 select @x 得到返回值。