PL/SQL的基本概念
PL/SQL(Procedure Language/SQL),是Oracle对Sql语言的过程化拓展,是一门语言,可以让SQL具备逻辑,具有过程处理能力。
基本语法结构
[declare --声明变量]
begin
[plsql代码]
[exception --异常处理]
end;
PL/SQL语法
declare
1.–语法:变量 变量类型或者变量 变量类型 := 赋值;
eg: person varchar2(20) := ‘一个人’;
2.–语法声明常量:变量名 constant关键字 变量类型 必须给常量赋值,就和java中的final修饰一样。
declare
person varchar2(20) := '一个人';
sal constant number := 200;
begin
--输出语句
dbms_output.put_line(person);
end;
带for循环的存储过程
SQL> create or replace procedure test is
2 x number;
3 begin
4 x :=0;
5 if x >0 then
6 begin
7 x := 0 - x;
8 end;
9 end if;
10 if x = 0 then
11 begin
12 x := 1;
13 end;
14 end if;
15 end test;
16 /
实际应用
PROMPT
PROMPT 表TP_DOC_URL添加PID字段
PROMPT ==========================
PROMPT
DECLARE
V_COUNT INTEGER;
BEGIN
SELECT COUNT(1) INTO V_COUNT FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'TP_DOC_URL' AND COLUMN_NAME = 'PID';
IF V_COUNT = 0 THEN
EXECUTE IMMEDIATE 'ALTER TABLE TP_DOC_URL ADD PID NUMBER(16)';
-- Add COMMENTs to the columns
EXECUTE IMMEDIATE 'COMMENT ON COLUMN TP_DOC_URL.PID IS ''报告上传人''';
END IF;
END;
/
在这里插入代码片
附mysql版本存储过程
drop PROCEDURE add_col_homework; -- 删除该存储过程
CREATE PROCEDURE `add_col_homework`()-- 新增一个存储过程
BEGIN
IF not EXISTS (SELECT column_name FROM information_schema.columns WHERE table_name = 'ot_user' and column_name = 'sfzzh')
-- 判断是否存在字段
THEN
-- 不存在则新增字段
ALTER TABLE ot_stamp ADD COLUMN `sfzzh` int(10);
END IF;
END;
call add_col_homework();-- 运行该存储过程