0

在 MySQL 中执行存储过程时,我收到错误消息“操作数应包含 1 列”。

以下是存储过程:

DELIMITER $$

USE `test`$$

DROP PROCEDURE IF EXISTS `test_proc`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_proc`(IN inputMsisdn BIGINT)
BEGIN

    IF(CHAR_LENGTH(inputMsisdn)=12, SUBSTR(3,inputMsisdn), inputMsisdn)
    THEN
        SELECT rmnum FROM testbase WHERE msisdn=inputMsisdn;
    END IF;
    END$$

DELIMITER ;

你能告诉我这个过程中有什么问题吗?

4

2 回答 2

0
IF(CHAR_LENGTH(inputMsisdn)=12, SUBSTR(3,inputMsisdn), inputMsisdn)

IF 中的条件必须是单个标量,但您有逗号,因此它试图将其视为值列表。也许您打算AND在有逗号的地方使用?

于 2014-10-11T17:37:11.383 回答
0

我认为错误在这条线上

IF(CHAR_LENGTH(inputMsisdn)=12, SUBSTR(3,inputMsisdn), inputMsisdn)但我不能告诉你为什么:)

于 2012-02-08T14:26:46.837 回答