我收到了语法错误,虽然我已经按照本教程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)'附近使用正确的语法
答案 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 replace
,number
只能与视图一起使用。
将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}}