PL/SQL 中 DML 與 TCL 的使用
過程化語言擴展:if\case\loop\while\for
sql:DML\DCL\DQL\DDL\DCL;
DQL 在 PL/SQL 中的使用
本地動態 SQL
普通本地動態sql語法:
EXECUTE IMMEDIATE 'dynamic_sql'
eg:
declare
v_sql varchar2(64);
begin
v_sql='create table test(id number,name varchar(12))';
execute immediate v_sql;
end;
帶有輸入的本地動態sql語法:
EXECUTE IMMEDIATE 'DYNAMIC_SQL'
USING BIND_ARGUMENT
eg:
declare
v_id number:=12;
v_name varchar2(12):='aa';
v_sql varchar2(64);
begin
v_sql='insert into test values(:1,:2)';
execute immediate v_sql;
using v_id,v_name;
end;
帶有輸入輸出的本地動態sql語法:
EXECUTE IMMEDIATE 'DYNAMIC_SQL'
USING BIND_ARGUMENT
RETURNING|RETURN INTO BIND_AEGUMENT
eg:
declare
v_id number:=12;
v_name varchar2(12):='aa';
v_sql varchar2(64);
v_outid number;
begin
v_sql='insert into test values(:1,:2) returning id into :3';
execute immediate v_sql;
using v_id,v_name;
returning into v_outid;
dbms_output.put_line(v_outid);
end;