这个存储过程死活不能执行
功能 :判断是否为数字  mysql 版本5.1 linux
CREATE procedure `IsNum` (str VARCHAR(25),out result)BEGINDECLARE iResult INT ;
set @str=str;SELECT @str REGEXP '^[0-9]*$' INTO iResult;IF iResult = 1 THEN
set result=1;
ELSE
set result=0;
END IF;END单独在控制台测试时可以的 set @str='str';SELECT @str REGEXP '^[0-9]*$' INTO iResult;
Query OK, 0 rows affected
ysql> select @iResult;
+----------+
| @iResult |
+----------+
| 0        |
+----------+
1 row in set问spc为什么不支持 SELECT @str REGEXP '^[0-9]*$' INTO iResult;  他总是提示这错误??

解决方案 »

  1.   

    result没有定义类型。
    mysql> CREATE procedure `IsNum` (str VARCHAR(25),out result int)
        ->
        -> BEGIN
        ->
        -> DECLARE iResult varchar(25) ;
        -> set @str1=str;
        ->
        -> SELECT @str1 REGEXP '^[0-9]*$' INTO iResult;
        ->
        -> IF iResult = 1 THEN
        -> set result=1;
        -> ELSE
        -> set result=0;
        -> END IF;
        ->
        -> END
        -> //
    mysql> set @result=0;//
    Query OK, 0 rows affected (0.00 sec)mysql> call IsNum('1344', @result)//
    Query OK, 0 rows affected (0.00 sec)mysql> select @result//
    +---------+
    | @result |
    +---------+
    |       1 |
    +---------+
    1 row in set (0.00 sec)mysql>
      

  2.   

    感谢 CREATE procedure `IsNum` (str VARCHAR(25),out result int)
    BEGIN
    set @str=str;
    SELECT @str REGEXP '^[0-9]*$' INTO @iResult;
    IF(@iResult=1) THEN
    set result=1;
    ELSE
    set result=0;
    END IF;END
     set @result=0;
    Query OK, 0 rows affected
    mysql> call IsNum('1344', @result);
    Query OK, 0 rows affectedmysql> select @result;
    +---------+
    | @result |
    +---------+
    | 1       |
    +---------+
    1 row in set
      

  3.   

    delimiter $$
    CREATE procedure `IsNum` (str VARCHAR(25),out result  int)
    BEGIN
    DECLARE iResult INT;
    SELECT str REGEXP '^[0-9]*$' INTO iResult;
    IF iResult = 1 THEN
    set result=1;
    ELSE
    set result=0;
    END IF;
    END$$这样
    CREATE procedure `IsNum` (str VARCHAR(25),out result  int)
    没问题;