1、DML(数据操纵语言) 有:select/update/delete/insert。如何用存储过程实现这些功能呢。
2、DDL(数据定义语言) 有:create/alter/drop/modify。以下通过实例学习这些语言。
3、DCL(数据控制语言) 有:grant/deny/revoke。
在存储过程中,如果想要实现表的创建、更新、插入等操作,可以使用动态SQL语句。在存储过程中不能使用静态SQL实现表的创建等。还有select xx into v_xx这样就不行了,返回不了值。要使用
str_access_number number;
str_sql := ’select count(*) from table_name a where a.id=:id’;
execute immediate str_sql into str_access_number;
其中:str_sql是一slectt语句,是varchar字符变量。str_access_number是对应要插入的字段名。
在存储过程中创建表的实现:
创建存储过程
create or replace procedure create_table
as
p_s varchar2(2000);
begin
p_s:='CREATE TABLE supplier (
supplier_id numeric(10) not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
)' ;--创建表的sql语句
execute immediate p_s;--运行p_s中的语句,创建supplier 表
exception
when others then
null;
end;
execute create_table;--执行存储过程,表创建成功
DECLARE
X NUMBER := 100;
BEGIN
FOR i IN 1..10 LOOP
IF MOD(i, 2) = 0 THEN
INSERT INTO supplier VALUES(i, x,': is even');
ELSE
INSERT INTO supplier VALUES(i, x,': is odd');
END IF;
x := x + 100;
END LOOP;
END;