2

こんにちは、次の挿入ステートメントでこのspを使用して挿入しようとしています:

call insertuser (1, '077788899965', 'Digest 1.0', ':=', 'asjdfhiuoadshgiadufg');

SPコード:

DELIMITER$$

CREATE PROCEDURE insertuser (IN IdParam INT, IN UserNameParam varchar(64), IN AttributeParam varchar(64), IN OpParam  char(2), IN ValueParam varchar(253)) 
BEGIN 

    // Delete user if they already exist

    DELETE FROM radcheck 
    WHERE username = UserNameParam; 

    // Insert

    INSERT INTO  radcheck (id, username, atrribute, op, value) 
    SELECT (IdParam, UserNameParam, AttributeParam, OpParam, ValueParam); 

END$$

しかし、次のエラーが発生しています:

エラー 1241 (21000): オペランドには 1 列を含める必要があります

これを解決する方法はありますか?

4

1 に答える 1

1
DELIMITER $$

CREATE PROCEDURE insertuser (IN IdParam INT, IN UserNameParam varchar(64), 
                             IN AttributeParam varchar(64), IN OpParam  char(2), 
                             IN ValueParam varchar(253)) 
BEGIN 
    DELETE FROM radcheck 
    WHERE username = UserNameParam; 

    INSERT INTO  radcheck (id, username, atrribute, op, `value`) 
    SELECT IdParam, UserNameParam, AttributeParam, OpParam, ValueParam;
END
$$

2 つの問題がありました。

  • 後にスペースがありませんDELIMITER
  • //は MySQL のコメント開始ではありません。使用する/* */

MySQL Workbenchなどの SQL IDE を使用すると、そのようなエラーが強調表示され、修正が容易になります。

于 2014-03-18T13:29:41.833 に答える