想在存储过程里面读取错误号和错误信息,放到变量里面,用什么函数??找了半天也没找到,SHOW ERRORS只能看,不能放到变量里面。

解决方案 »

  1.   

    http://blog.chinaunix.net/u3/116107/showart.php?id=2349490看看这个。
    存储过程的异常处理。
      

  2.   

    MYSqL没有RAISERROR之类的语句,只有用手工方法
      

  3.   

    drop procedure if exists p1;
    create procedure P1()
    begin
        declare exit HANDLER FOR SQLSTATE '23000' insert into Error(Error_ID,Error_SQLSTATE,Error_Describe,Error_time) values(1062,'23000','键%d的重复条目',now());
        declare exit HANDLER FOR SQLSTATE '21S01' insert into Error(Error_ID,Error_SQLSTATE,Error_Describe,Error_time) values(1136,'21S01','列计数不匹配行%ld上的值计数',now());
        
        rollback;
        start transaction;
        insert into ta values(6,'张三',now());
        insert into ta values(7,'李四',now());
        commit;
    end;这个不错,问题是错误是未知的,我不能把所有的错误都列出来. 有好办法么?类似SQL Server里面的 select @msg =ERROR_MESSAGE() 。
      

  4.   

    ERROR_MESSAGE() 
    没有这东西。你枚举出常见的错误就差不多了。
      

  5.   


    谢谢,我刚开始玩mysql,不熟啊。。Mysql是不是不常用存储过程,我一同事以前用mysql的,居然不会写存储过程。。
      

  6.   

    很多开发的就写写基本的INSERT,SELECT,UPDATE就完事了。不会存储过程也不稀奇。
    存储过程在MYSQL里面,也是5以后才有的好像。
      

  7.   

    存储过程中没有办法,
    你或者可以改写MYSQL的源代码以添加这个功能。或者直接在C或者其它程序中写代码,可以得到错误返回值。