CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT char(15)) IS BEGIN SELECT o_order_num:=(TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7,'0')); END; /警告: 创建的过程带有编译错误。不知道那里错了麻烦路过的各位
SELECT TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7,'0')) into o_order_num from dual; 这样写
这样也是错的 SQL> CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT char(15)) 2 IS 3 BEGIN 4 SELECT TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7 ,'0')) into o_order_num from dual; 5 END; 6 /警告: 创建的过程带有编译错误。
CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT char(15)) 改成 CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT char)
CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT char) IS BEGIN --顺便说下,你的SQL语句里多了个")",下面的是对的 SELECT TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7,'0') into o_order_num from dual; END;
好了,谢谢,顺便问下,为什么这里一定要写成o_order_num OUT char 而不能手动指定其长度
CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT varchar2) IS BEGIN SELECT (TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7,'0')) into o_order_num from dual; dbms_output.put_line(o_order_num); END;--过程里面的参数不能允许带长度的
into o_order_num
from dual;
这样写
SQL> CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT char(15))
2 IS
3 BEGIN
4 SELECT TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7
,'0')) into o_order_num from dual;
5 END;
6 /警告: 创建的过程带有编译错误。
改成
CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT char)
IS
BEGIN
--顺便说下,你的SQL语句里多了个")",下面的是对的
SELECT TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7,'0') into o_order_num from dual;
END;
CREATE OR REPLACE PROCEDURE PR_get_order_num(o_order_num OUT varchar2)
IS
BEGIN
SELECT (TO_CHAR(SYSDATE,'YYYYMMDD')||LPAD(TO_CHAR(seq_order_num.nextval),7,'0')) into o_order_num from dual;
dbms_output.put_line(o_order_num);
END;--过程里面的参数不能允许带长度的