我刚接触mysql数据库,今天遇到了一些问题一直不能解决,请求高手赐教!!!!该如何解决?急!!!
sql脚本是:
DROP TABLE IF EXISTS sequence;
CREATE TABLE sequence (
name VARCHAR(50) NOT NULL,
current_value INT(6) NOT NULL,
increment INT(6) NOT NULL DEFAULT 1,
PRIMARY KEY (name)
)
DROP FUNCTION IF EXISTS currval;
DELIMITER
CREATE FUNCTION currval (`seq_name` VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
DECLARE value INTEGER;
SET value = 0;
SELECT current_value INTO value
FROM sequence
WHERE name = seq_name;
RETURN value;
END
DELIMITER ; DROP FUNCTION IF EXISTS nextval;
DELIMITER
CREATE FUNCTION nextval (seq_name VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
UPDATE sequence
SET current_value = current_value + increment
WHERE name = seq_name;
RETURN currval(seq_name);
END
DELIMITER ; 报错:
You have an error in your syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP FUNCTION IF EXISTS currval' at line 1
或者
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE sequence (name VARCHAR(50) NOT NULL,current_value INT(6) NOT NULL,incremen' at line 1
sql脚本是:
DROP TABLE IF EXISTS sequence;
CREATE TABLE sequence (
name VARCHAR(50) NOT NULL,
current_value INT(6) NOT NULL,
increment INT(6) NOT NULL DEFAULT 1,
PRIMARY KEY (name)
)
DROP FUNCTION IF EXISTS currval;
DELIMITER
CREATE FUNCTION currval (`seq_name` VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
DECLARE value INTEGER;
SET value = 0;
SELECT current_value INTO value
FROM sequence
WHERE name = seq_name;
RETURN value;
END
DELIMITER ; DROP FUNCTION IF EXISTS nextval;
DELIMITER
CREATE FUNCTION nextval (seq_name VARCHAR(50))
RETURNS INTEGER
CONTAINS SQL
BEGIN
UPDATE sequence
SET current_value = current_value + increment
WHERE name = seq_name;
RETURN currval(seq_name);
END
DELIMITER ; 报错:
You have an error in your syntax;check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP FUNCTION IF EXISTS currval' at line 1
或者
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE sequence (name VARCHAR(50) NOT NULL,current_value INT(6) NOT NULL,incremen' at line 1
mysql> DROP TABLE IF EXISTS sequence;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql>
mysql> CREATE TABLE sequence (
-> name VARCHAR(50) NOT NULL,
-> current_value INT(6) NOT NULL,
-> increment INT(6) NOT NULL DEFAULT 1,
-> PRIMARY KEY (name)
-> );
Query OK, 0 rows affected (0.09 sec)mysql>
mysql> DROP FUNCTION IF EXISTS currval;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> DELIMITER //
mysql> CREATE FUNCTION currval (`seq_name` VARCHAR(50))
-> RETURNS INTEGER
-> CONTAINS SQL
-> BEGIN
-> DECLARE `value` INTEGER;
-> SET `value` = 0;
-> SELECT current_value INTO `value`
-> FROM sequence
-> WHERE name = seq_name;
-> RETURN value;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)mysql> DELIMITER ;
mysql>
mysql> DELIMITER //
mysql>
mysql> CREATE FUNCTION nextval (seq_name VARCHAR(50))
-> RETURNS INTEGER
-> CONTAINS SQL
-> BEGIN
-> UPDATE sequence
-> SET current_value = current_value + increment
-> WHERE name = seq_name;
-> RETURN currval(seq_name);
-> END
-> //
Query OK, 0 rows affected (0.00 sec)mysql> DELIMITER ;
mysql>
输入UDF前,用DELIMITER 改变结束符,结束后修改回来