<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    開發動態sql

    1 動態sql 簡介
    2
    ? 1 使用execute immediate 處理ddl 操作
    ??? create or replacee procedure drop_table(table_name varchar2)
    ??? is
    ???? sql_statement varchar2(100);
    ??? begin
    ?????? sql_statement:='drop table'||table_name;
    ?????? execute immediate sql_statement;
    ?? 調用
    ?????? exec drop_table('worker');
    ??? end;
    ??? 2) 使用 execute immediate 處理dcl 操作
    ??? create or replace procedure grant_sys_priv
    ??? (priv varchar2,username varchar2)
    ??? is
    ??? begin
    ???? sql_stat:='gruant'||priv||'to'||username;
    ???? execute immediate sql_stat;
    ??? end;

    ?? exec grant_sys_priv('create session','scott');
    ?? 3 使用execute immediate 處理dml 操作
    ???? 1) 處理無占位符和returning 子句的dml 語句
    ???? delcare
    ????? sql_stat varchar2(100);
    ???? begin
    ????? sql_stat:='update emp set sal=sal*1.1 where deptno=44';
    ????? execute immediate sql_stat;
    ???? end;
    ????? 2) 處理包含占位符的dml語句
    ?????? delare
    ??????? sql_stat varchar2(100);
    ?????? begin
    ???????? sql_stat:='update emp set sql=sql*(1+:percent/100)'
    ???????????????? ||'where deptno=:dno';
    ???????? execute immediate sql_stat using &1,&2;
    ?????? end;
    ????? 3) 處理包含returning 子句的dml語句
    ?????? declare
    ???????? salary number(6,2);
    ???????? sql_stat varchar2(200);
    ?????? begin
    ???????? sql_stat:='update emp set sal=sal*(1:percent/100)'
    ??????????? ||'where empno=:eno returning sal into :salary';
    ???????? execute immediate sql_stat using &1,&2;
    ??????????? returning into salary;
    ?????? end;
    ?????? 輸入1的值 15
    ?????? 輸入2的值 2222
    ?????? 新工資;2223
    ????? 4) 使用execute immediate 處理單行查詢
    ??????? declare
    ????????? sql_stat varcchar2(100);
    ????????? emp_record emp%rowtype;
    ??????? begin
    ????????? sql_stat:='select * from emp where empno=:eno';
    ????????? execute immediate sql_stat into emp_record using &1;
    ?????? end;
    ?3 處理多行查詢語句
    ?? declare
    ????? type empcurtyp is ref cursor;
    ????? emp_cv empcurtyp;
    ????? emp record emp%rowtype;
    ????? sql_stat varchar2(100);
    ?? begin
    ????? sql_stat:='select * from em where deptno=:dno';
    ????? open emp_cv for sql_stat using &dno;
    ????? loop
    ???????? fetch emp_cu into emp_record;
    ???????? exit when emp_cv%notfound;
    ????? end loop;
    ????? close emp_cv;
    ?? end;
    4 在動態sql 中使用bulk語句
    ?? 1) 在 execute immediate 語句中使用動態bulk 語句
    ???? declare
    ?????? type ename_table_type is table of emp.ename%type
    ??????? index by binary_integer;
    ?????? type sal_table_type is table of emp.sal%type
    ??????? index by binary_integer;
    ?????? ename_table ename_table_type;
    ?????? sa_table sal_table_type;
    ?????? sal_stat varchar2(100);
    ?????? begin
    ???????? sql_stat:='update emp set sal=sal*(1+:percent/100)'
    ?????????? || 'where deptno=:dno'
    ?????????? ||'returning ename,sal into :name,:salary';
    ?????? execut immediate sql_stat using &percent,&dno
    ???????? returning bulk collect into ename_table,sal_table;
    ?????? for i in 1..ename_table.count loop
    ?????? ....
    ?????? end loop;
    ???? end;
    ??? 2) 使用bulk 子句處理多行查詢
    ????? sql_stat:='select ename from emp where deptno=:dno';
    ????? execute immediate sql_stat bulk collect into ename_table using &dno;
    ??? 3) 在fetch 語句中使用bulk 子句
    ????? declare
    ??????? type empcurtyp is ref cursor;
    ??????? emp_cv empcurtyp;
    ??????? type ename_table_type is table of emp.ename%type;
    ???????? index by binary_integer;
    ??????? ename_table ename_table_type;
    ??????? sql_stat varchar2(100);
    ?????? begin
    ???????? sql_stat:='select ename from emp where job:=title';
    ???????? open emp_cv for sql_stat using '&job';
    ???????? fetch emp_cv bulk collect into ename_table;
    ??? 4) 在forall 語句中使用bulk 子句
    ????? declare
    ??????? type ename_table_type is table of emp.ename%type;
    ??????? type sla_table_type is table of emp.sal%type;
    ??????? ename_table ename_table_type;
    ??????? sal_table sal_table_type;
    ??????? sql_stat varchar2(100);
    ????? begin
    ??????? ename_table:=ename_table_type('scott','smith','clark');
    ??????? sql_stat:='update emp set sal=sal*1.1 where ename=:1'
    ??????????? ||'returning sal into :2';
    ??????? forall i in 1..ename_table.count
    ????????? execite immediate sql_stat using ename_table(i)
    ??????????? returning bulk collect into sal_table;???????
    ????? end;

    posted on 2006-10-11 14:43 康文 閱讀(478) 評論(0)  編輯  收藏 所屬分類: 數據庫

    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲激情视频网站| 久久亚洲精品无码| 黄色片网站在线免费观看| 中文字幕成人免费视频| 婷婷亚洲久悠悠色悠在线播放| 日韩a级无码免费视频| 亚洲韩国精品无码一区二区三区 | 国产成人免费a在线资源| 亚洲av片不卡无码久久| 中文字幕人成无码免费视频| 亚洲国产精品免费观看| 女人18毛片免费观看| 久久精品国产亚洲av天美18| 大胆亚洲人体视频| 一本久久A久久免费精品不卡| 日本亚洲国产一区二区三区| 97国免费在线视频| 久久久久亚洲精品日久生情| 国产桃色在线成免费视频| 亚洲国产精品无码中文lv| 亚洲国产精品毛片av不卡在线| 精品国产免费人成网站| 亚洲情a成黄在线观看动漫尤物| 999久久久免费精品播放| 亚洲AV日韩综合一区尤物| 一级毛片直播亚洲| 中文字幕乱理片免费完整的| 女人18特级一级毛片免费视频| 极品色天使在线婷婷天堂亚洲| 亚洲一区二区三区在线视频 | 亚洲av专区无码观看精品天堂| 免费看少妇作爱视频| 久久久久久av无码免费看大片| 亚洲专区先锋影音| 成年人免费网站在线观看| 精品无码一级毛片免费视频观看| 亚洲欧洲日产国码久在线观看| 永久黄网站色视频免费观看| 99视频在线免费观看| 亚洲卡一卡二卡乱码新区| 久久精品国产亚洲精品|