訪問oracle

          在pl/sql 中只能直接嵌入sql,dml,以及事務控制語句,而不能嵌入ddl語句如create。。和dcl 語句如grant
          1 檢索單行數據
          ? 1 使用游標變量接受數據
          ? declare
          ??? v_ename emp.ename%type
          ??? v_sal?? emp.sal%type
          ? begin
          ??? select ename,sal into v_ename,v_sal
          ??? from emp
          ? 2 使用記錄變量接受數據
          ?? declare
          ??? type emp_record_type is record(
          ????? ename emp.ename%type,sal emp.sal%type
          ??? );
          ??? emp_record emp_record_type;
          ?? begin
          ??? select ename,sal into emp_record
          ??? from emp
          ? 3 嵌入 select 語句注意的事項:語句必須返回一條數據,且只能返回一條數據,否則回觸發例外,或顯示錯誤
          ??? 1) no_data_found
          ??? 2) too_many_rows
          2 操縱數據
          ? 1 插入數據
          ??? 1) 使用values子句插入數據
          ??? declare
          ???? v_deptno dept.deptno%type
          ???? v_dname? dept.dname%type
          ???? v_deptno:=&no
          ???? v_dname:=&name;
          ???? insert into dept(deptno,dname)
          ???? values(v_deptno,v_danme);
          ??? 2)使用子查詢插入數據
          ??? declare
          ???? v_deptno emp.deptno%type:=no;
          ??? begin
          ???? insert into employee
          ???? select * from emp where deptno=v_deptno
          ?? 3 更新數據
          ??? 1)使用表達時更新列值
          ??? declare
          ???? v_deptno dept.deptno%type:=&no;
          ???? v_loc dept.loe%type:='&loc';
          ??? begin
          ???? update dept set loc=v_loc
          ???? where deptno=v.deptno;
          ??? end;
          ?? 2) 使用子查詢更新列值
          ??? declare
          ???? v_ename emp.ename%type:='&name';
          ??? begin
          ???? update emp set(sal,comm)=
          ???? (select sal ,comm from emp where ename=v_ename)
          ???? where job=(select job from emp where ename=v_ename);
          3 sql 游標
          ? 1 sql%isopen 用于確定sql 游標是否已經打開。當在pl/sql 塊中執行select into ,update 以及delete 語句
          ??? 時oracle 會隱含的打開游標,并且在語句執行完之后會隱含的關閉游標。
          ? 2 sql/%found 用于確定sql 語句執行是否成功。
          ??? declare
          ?????? v_deptno emp.deptno%type:=$no;
          ??? begin
          ?????? update emp set sal=sal*1.1
          ?????? where deptno=v_deptno;
          ??? if sql%found then
          ?????? dbma_output.put_line('語句執行成功');
          ??? else
          ?????? dbms_output.put_line('not success')
          ??? end if
          ?? end
          ?? 3 sql%notfound
          ?? 4 sql%rowcount 用于返回sql 語句所作用的總計行數
          4

          posted on 2006-08-09 11:23 康文 閱讀(147) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 崇礼县| 邵阳县| 噶尔县| 启东市| 双柏县| 什邡市| 凤庆县| 扶风县| 久治县| 元阳县| 资阳市| 莱州市| 会昌县| 景东| 堆龙德庆县| 阜新| 德格县| 南汇区| 天水市| 绥宁县| 唐山市| 杨浦区| 开阳县| 治多县| 黑龙江省| 陇川县| 高雄县| 乐清市| 东乡县| 新田县| 蓝山县| 荥经县| 肥城市| 东源县| 雷州市| 义马市| 卓资县| 加查县| 佛山市| 房产| 建水县|