MySQL SP : ERROR 1241 (21000)

标签 mysql stored-procedures parameters insert mysql-error-1241

您好,我正在尝试使用此 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$$

但是我得到的错误是:

ERROR 1241 (21000): Operand should contain 1 column(s)

知道如何解决这个问题吗?

最佳答案

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
$$

有两个问题:

  • DELIMITER 后缺少空格
  • // 在 MySQL 中不是注释开头。使用 /* */

如果您使用像 MySQL Workbench 这样的 SQL IDE,这样的错误将被突出显示并且更容易修复。

关于MySQL SP : ERROR 1241 (21000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480639/

相关文章:

Python - 返回构造函数参数名称而不实例化

MySQL 按两个随机行排序,然后其余行排序

php - MySql 查询子集

c# - 使用来自 Oracle 存储过程的 refcursor 值填充 C# 数据表

bash - 是否可以将 getopts 与位置参数混合使用?

c# - Crystal Report 参数再次不起作用

java - 使用 hibernate 和 spring 更新

php - 插入重复更新 .. WHERE foreign_key_id = foreign_key_id

php - 调用 mysql 过程的 php 函数的怪异

sql - 是否可以在 Firebird 的存储过程中返回多行?