1、简单的存储过程创建
CREATE OR REPLACE PROCEDURE CREATE_VIEW(dblink_name varchar,table_name varchar,view_name varchar)
IS
V_SQL VARCHAR2(10240);
BEGIN
V_SQL := 'CREATE OR REPLACE VIEW '||view_name||' AS (select * from
'||table_name||'@'||dblink_name||')';
EXECUTE IMMEDIATE V_SQL;
END;
2、循环语句
2.1、简单循环
语句:LOOP
要执行的语句;
EXIT WHEN <条件语句> --条件满足,退出循环语句
END LOOP;
DECLARE
int NUMBER(2) :=0;
BEGIN
LOOP
int := int + 1;
DBMS_OUTPUT.PUT_LINE('int 的当前值为:'||int);
EXIT WHEN int =10;
END LOOP;
END;
2.2、WHILE循环
语句: WHILE <布尔表达式> LOOP
要执行的语句;
END LOOP;
DECLARE
x NUMBER :=1;
BEGIN
WHILE x<=10 LOOP
DBMS_OUTPUT.PUT_LINE('X的当前值为:'||x);
x:= x+1;
END LOOP;
END;
2.3、FOR循环
语句:FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句;
END LOOP [循环标签];
每循环一次,循环变量自动加1;使用关键字REVERSE,循环变量自动减1。跟在IN REVERSE 后面的数字必须是从小到大的顺序,而且必须是整数,不能是变量或表达式。可以使用EXIT退出循环。
BEGIN
FOR int in 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('int 的当前值为: '||int);
END LOOP;
END;
3、判断语句
语句:IF 判断条件 THEN
执行的语句;
ELSIF 判断条件 THEN
执行语句;
ELSE
执行语句;
END IF;
DECLARE
x varchar2 :='住宅';
t number;
BEGIN
IF x = '住宅' THEN
t := 0;
ELSIF x = '商务' THEN
t := 2;
ELSIF x = '商住' THEN
t := 3;
ELSE
t := 9;
END IF;
END;
4、游标
语句:cursor
[cursor变量名称]([参数名称] [参数类型])
IS
[SQL语句,可以使用传入参数]
CURSOR
cur_netnode
IS
SELECT DISTINCT code
FROM tmp_fetch_data t --for test 优化1
WHERE code IS NOT NULL;
4.1、遍历游标的值
4.1.1、loop fetch使用
fetch [cursor变量] into [循环变量]
when [cursor变量] %notfound;
DECLARE
CURSOR cur_netnode IS
SELECT DISTINCT code
FROM tmp_fetch_data t
WHERE code IS NOT NULL;
BEGIN
OPEN cur_netnode; --打开游标
LOOP
FETCH cur_netnode
INTO v_code_src; -- 对应游标查询出的参数值
EXIT WHEN cur_netnode%NOTFOUND; -- 结束循环条件
SELECT COUNT(1)
INTO v_flag_prv
FROM res_netnode
WHERE nodename = v_code_src;
IF v_flag_prv = 0 THEN
INSERT INTO res_netnode(nodeid,nodename,upnodeid,type,maxsub,status,memo)
VALUES
(seq_res_netnode_id.nextval, v_code_src, 0, '1', 0, '1', NULL);
ELSE
NULL;
END IF;
END LOOP;
END;
4.1.2、FOR循环方式处理游标
declare
cursor c_list is select * from table_User i where =4;
begin
for c in c_list loop
dbms_output.put_line('用户的id='||); -------------输出结果集
end loop;
end;