我是sql的初学者..我想让程序像oracle中的序列一样
制作程序,我遇到错误:1242 ...请帮帮我〜
- 目标表
CREATE TABLE id_generator(seq_currval INT(8)UNSIGNED NOT NULL,
org_code varchar(4)not null
);
- 程序
delimiter $$ DROP PROCEDURE IF EXISTS sp_seq $$ CREATE PROCEDURE sp_seq(IN org_code varchar(4),OUT parma1 VARCHAR(11))BEGIN DECLARE year VARCHAR(1);
DECLARE月份VARCHAR(2);
DECLARE seq_current int;
SET year ='5';
SET月='01';
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
START TRANSACTION;
SET seq_current = (select seq_currval
from id_generator
where org_code = org_code);
update id_generator
set seq_currval = seq_current + 1 where org_code = org_code;
COMMIT;
SET seq_current = seq_current + 1;
select CONCAT(year, month ,seq_current);
END $$分隔符;
- 呼叫程序后,我发现错误:1242:
CALL sp_seq('1234'); - >错误:错误代码:1242 . 子查询返回超过1行
2 回答
这个查询
返回多个记录,不能存储在单个变量中 .
总是如此 . 将输入参数重命名为列名以外的其他参数 . 否则DB无法区分它们 .
这个查询
始终返回与1 = 1类似的所有行
将其更改为: