回答2楼的
create procedure testProc
(
 out param1 varchar(20)
)
begin
  set param1 = 'ok';
end调用测试
call testProc(@a);
select @a
-- 输出结果 'ok'上面我用了@a ,在存储过程中用的param1.mysql环境下可以正确使用。
asp.net里面
如果 MySqlParameter param1 = new MySqlParameter("@param1", MySqlDbType.VarChar, 20);
param1.Direction = ParameterDirection.Output;
提示 Parameter '@1118079786param1' must be defined
如果 MySqlParameter param1 = new MySqlParameter("@a", MySqlDbType.VarChar, 20);
param1.Direction = ParameterDirection.Output;
提示 Parameter '@param1' not found in the collection.

解决方案 »

  1.   

    不知道会不会是 Connector/Net 5.2  本身的bug?
      

  2.   

    MySqlParameter param1 = new MySqlParameter("@param1", MySqlDbType.VarChar, 20); 
    param1.Direction = ParameterDirection.Output; 
    这个写法好像有问题,我的映像针对OutPut参数,必须在New的时候就指定为OutPut这种参数理解起来应该是建立了一个InPut的参数,MySQL自动把存储过程中的参数改名了,然后告诉你参数没有指定
      

  3.   

    回7楼:
    好像不是这个问题,按照你的提示,我修改了一下代码
    new MySqlParameter("?Msg",MySqlDbType.VarChar,20,ParameterDirection.Output,true,0,0,"",DataRowVersion.Default,null)
    仍然会生成一个不存在的变量,并且贴士变量为定义
    MySql.Data.MySqlClient.MySqlException: Parameter '@3353701274Msg' must be defined.继续求解~~~~~~
      

  4.   

    在发现一个问题,mysql存储过程是不是没有return返回值的?
      

  5.   

    貌似是个bug
    http://bugs.mysql.com/bug.php?id=25013
      

  6.   

    还没有答案吗??等不下去了
    太多地方需要存储过程返回值了,从mssql迁移过来的,真实一路坎坷。
    没办法暂时在库里面创建了一个表存储临时返回值,每次去读写表了,哎,浑身不舒服,希望极早有高人相救,拜谢了~~~~
      

  7.   

    回复10楼2006年,5.0连接器的bug不会到5.2还没有解决吧,我用的是5.2连接器,郁闷中
      

  8.   

    MySqlParameter param1 = new MySqlParameter("?param1", MySqlDbType.VarChar, 20);  
    param1.Direction = ParameterDirection.Output;