訪問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 康文 閱讀(148) 評論(0)  編輯  收藏 所屬分類: 數據庫

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

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盐城市| 两当县| 隆安县| 光山县| 古丈县| 顺昌县| 东安县| 陵水| 芮城县| 翁源县| 睢宁县| 怀宁县| 安远县| 拉孜县| 巴东县| 永昌县| 香格里拉县| 新余市| 醴陵市| 崇仁县| 石家庄市| 固阳县| 吉林市| 平谷区| 马山县| 绥滨县| 桂阳县| 依兰县| 黔江区| 花莲市| 隆回县| 贡嘎县| 无锡市| 通山县| 余庆县| 水富县| 阿拉善左旗| 滦南县| 永吉县| 宁国市| 濉溪县|