一、使用到的关键字
- create or replace
创建或替换 - procedure
存储过程 - AS
关键字 - begin
关键字 - end
关键字 - dbms_output.put_line(’’);
输出语句 - 调用
(1):第一种方式
BEGIN
存储过程名();
END;
(2):第二种方式
DECLARE
变量
BEGIN
存储过程名();
END;
- IN
输入 - OUT
输出
二、实战阶段
- 输出一个 hell world!
- 语句
CREATE OR REPLACE PROCEDURE TEST0
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('HELLO WORD!');
END;
- 调用
BEGIN
TEST0();
END;
- 结果
- 带变量的存储过程
- 语句
CREATE OR REPLACE PROCEDURE TEST1
AS
ONE VARCHAR(100);
BEGIN
ONE:='hello world!';
DBMS_OUTPUT.PUT_LINE('ONE='||ONE);
END;
- 调用
BEGIN
TEST1();
END;
- 结果
- 带参数的存储过程
- 语句
CREATE OR REPLACE PROCEDURE TEST2(NAME IN VARCHAR,AGE IN INT)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('NAME='||NAME||', AGE='||AGE);
END;
- 调用
DECLARE
NAME VARCHAR(100);
AGE INT;
BEGIN
NAME:='小明';
AGE:=12;
TEST2(NAME,AGE);
END;
- 结果
4、出参存储过程
- 语句
CREATE OR REPLACE PROCEDURE TEST4(NAME OUT VARCHAR)
AS
BEGIN
SELECT '小明' INTO NAME FROM DUAL;
END;
- 调用
DECLARE
NAME VARCHAR(100);
BEGIN
TEST4(NAME=>NAME);
DBMS_OUTPUT.PUT_LINE('NAME='||NAME);
END;
- 结果
5. FOR循环
- 语句
CREATE OR REPLACE PROCEDURE TEST5
AS
I INT;
J INT;
BEGIN
I:=0;
J:=0;
FOR I IN 1..9 LOOP
FOR J IN 1..I LOOP
DBMS_OUTPUT.PUT(I||'*'||J||'='||I*J);
DBMS_OUTPUT.PUT(' ');
END LOOP;
DBMS_OUTPUT.NEW_LINE;
END LOOP;
END;
- 调用
BEGIN
TEST5();
END;
- 结果
6. WHILE循环
- 语句
CREATE OR REPLACE PROCEDURE TEST6
AS
I INT;
J INT;
BEGIN
I:=0;
J:=0;
WHILE I<=9 LOOP
J:=1;
WHILE J<=I LOOP
DBMS_OUTPUT.PUT(I||'*'||J||'='||I*J);
DBMS_OUTPUT.PUT(' ');
J:=J+1;
END LOOP;
DBMS_OUTPUT.NEW_LINE;
I:=I+1;
END LOOP;
END;
- 调用
BEGIN
TEST6();
END;
- 结果
- LOOP循环
- 语句
CREATE OR REPLACE PROCEDURE TEST7
AS
I INT;
J INT;
BEGIN
I:=0;
J:=0;
LOOP
LOOP
DBMS_OUTPUT.PUT(I||'*'||J||'='||I*J);
DBMS_OUTPUT.PUT(' ');
J:=J+1;
EXIT WHEN J>I;
END LOOP;
DBMS_OUTPUT.PUT_LINE('');
I:=I+1;
J:=1;
EXIT WHEN I>9;
END LOOP;
END;
- 调用
BEGIN
TEST7();
END;
- 结果