MySQL存储过程带有参数和变量错误

时间:2014-04-08 13:17:00

标签: mysql

我收到了语法错误,虽然我已经按照本教程http://forums.mysql.com/read.php?98,358569进行了修改。遗漏了一些内容,我无法弄清楚它是什么。错误消息说它在第1行。我已经反复检查了这一行,我没有看到问题出在哪里。

DELIMITER $$
create or replace procedure profile_fullname(IN memid number)
begin
declare v_name varchar2(100);
declare fn varchar2(50);
declare ln varchar2(50);


select fname, lname into fn, ln from member where memberid = memid;
v_name := fn || ' ' || ln;

insert into profile(memberid, fullName) values (memid, v_name);

END $$

DELIMITER ;

错误消息#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的'procedure profile_fullname(IN memid number)begin declare v_name varchar2(100)'附近使用正确的语法

2 个答案:

答案 0 :(得分:0)

试试这个,

create or alter procedure profile_fullname(IN memid number)

代替,

create or replace procedure profile_fullname(IN memid number)

希望这会对你有所帮助。

答案 1 :(得分:0)

您的代码中有很多错误:

使用DROP PROCEDURE IF EXISTS profile_fullname;代替or replacenumber只能与视图一起使用。

profile_fullname(IN memid number)中的INT替换为number或您需要的任何内容。 MySQL中没有varchar2类型。

将所有VARCHAR替换为varchar2。看起来你正在与Oracle混合。还没有v_name := fn || ' ' || ln;类型。

SET v_name := fn || ' ' || ln;替换为SET。您必须使用关键字DROP PROCEDURE IF EXISTS profile_fullname; DELIMITER $$ CREATE PROCEDURE profile_fullname(IN memid INT) BEGIN DECLARE v_name VARCHAR(100); DECLARE fn VARCHAR(50); DECLARE ln VARCHAR(50); SELECT fname, lname into fn, ln FROM member WHERE memberid = memid; SET v_name := fn || ' ' || ln; INSERT INTO profile (memberid, fullName) VALUES (memid, v_name); END $$ DELIMITER ; 设置变量。

{{1}}