oracle pl sql %type

来源:互联网 发布:手机淘宝首页尺寸大小 编辑:程序博客网 时间:2024/05/17 22:06

创建表:

CREATE TABLE TB_USER(    ID INTEGER PRIMARY KEY,    USER_NAME VARCHAR2(20) NOT NULL,    USER_AGE INTEGER NOT NULL);CREATE SEQUENCE SEQ_USERINCREMENT BY 1START WITH 1NOMAXVALUENOCYCLECACHE 10;CREATE OR REPLACE TRIGGER TR_USER BEFORE INSERT ON TB_USER FOR EACH ROWBEGIN    SELECT SEQ_USER.NEXTVAL INTO :NEW.ID FROM DUAL;END;

插入一些数据。

然后创建存储过程:

CREATE OR REPLACE PROCEDURE PR_USER(USER_ID IN NUMBER, AGE IN NUMBER) ASV_AGE TB_USER.USER_AGE%TYPE;V_NAME TB_USER.USER_NAME%TYPE;BEGIN  SELECT USER_NAME, USER_AGE INTO V_NAME, V_AGE FROM TB_USER WHERE ID = USER_ID;  DBMS_OUTPUT.PUT_LINE(V_NAME);  UPDATE TB_USER SET USER_AGE = AGE + V_AGE - 1 WHERE ID = USER_ID;  COMMIT;END;

执行:

CALL PR_USER(1, 10);

使用%type,就不需要确定varchar2的长度了,否则,如果存储过程里面这样定义:

V_NAME VARCHAR2(20),而TB_USER从20增加到30,那么存储过程里的V_NAME的长度也要跟着改。

0 0
原创粉丝点击