mysql - #1136 - mysql 存储过程的列计数与第 1 行的值计数不匹配

标签 mysql stored-procedures

当我尝试调用以下 sp 代码时,它给出了上述错误。 参数数量相等

drop procedure if exists add_post_with_name;
create procedure add_post_with_name(  in_author_name int ,in_title varchar(150),in_content text , in_html text, in_slug varchar(250),in_post_type varchar(50) , in_url tinyint)  
begin
    declare post_id int default 0;
    declare author_id int default 0;

    select id into author_id from user_profile where user_name = in_author_name;
    if ( author_id ) then
      insert into post (title,content,html,slug,post_type,url,author_id)
              values (in_title,in_content,in_html,in_slug,in_post_type,in_url);
      select id into post_id from post where id = last_insert_id();

      if ( in_post_type = 'SCHOLARSHIP' or in_post_type = 'JOB'
          or in_post_type = 'QUESTION' or in_post_type = 'BLOG' or in_post_type = 'SOCIAL BOOKMARK' ) then
          insert into post_hierarchy_rel (child_post_id) values (post_id);
      end if;
      select post_id;
    else
      select 0;
    end if;

end;$$

我按照下面的代码在 phpmyadmin 中进行调用...它引发了上述错误。

SET @p0='temp'; 
SET @p1='asdddddddd'; 
SET @p2='aaaaaaaaaaaa'; 
SET @p3='aaaaaaaaaaaaa'; 
SET @p4='aaaaaaaaaa'; 
SET @p5='JOB'; 
SET @p6='1'; 

CALL `add_post_with_name`(@p0, @p1, @p2, @p3, @p4, @p5, @p6 );

最佳答案

这是您的程序中的错误

insert into post (title,content,html,
slug,post_type,url,author_id) <-- here you have 7 columns
values (in_title,in_content,in_html,
in_slug,in_post_type,in_url); <-- only 6 values supplied

因为您已经根据发布的代码获得了 author_id

declare author_id int default 0;

select id into author_id from user_profile where user_name = in_author_name;

您的实际插入应该是

insert into post (title,content,html,
slug,post_type,url,author_id)
values (in_title,in_content,in_html,
in_slug,in_post_type,in_url,author_id); <-- see author_id included as last value

关于mysql - #1136 - mysql 存储过程的列计数与第 1 行的值计数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23932863/

相关文章:

mysql - MAMP Pro 出错

php - 数据库中的客户数据

java - 防止 hibernate 按列值重复行

c# - Entity Framework 核心数据库首先不渲染存储过程模型?

json - oracle中如何从存储过程中获取数据

mysql - 用mysql提取

mysql - 在 Hive 中找到右侧的数字

c# - IndexOutOfRangeException SqlDataReader 从表中读取 bool 值

sql-server-2005 - 多个表的存储过程

sql - 我在这个 MySQL 存储过程中做错了什么?