Oracle學習筆記第十三天

2021-09-05 08:59:47 字數 2777 閱讀 3659

靜態sql

動態sql

注意:ddl和dcl語句不能直接用在靜態sql,如果要用,可以用在動態sql。

動態sql實現方法:

方法1:

方法2:dbms_sql程式包

方法詳解:

execute immediate 語句

-- 語法

execute immediate dynamic_sql_string

[into define_variable_list]

[using bind_argument_list]

;

解釋:

dynamic_sql_string 是動態sql 語句字串

into 子句用於接受select語句選擇的記錄值

using 子句用於繫結輸入引數變數

-- 舉例

-- 方式一

set serveroutput on

;declare

v_sql varchar2(

200) :=

'drop table emp2'

;begin

execute immediate v_sql;

end;

/-- 方式二

set serveroutput on

;declare

begin

execute immediate 'drop table emp2'

;end

;/

set serveroutput on

;declare

v_sql varchar2(

200) :=

'select sal from emp where empno = :empno'

; v_sal emp.sal%

type

;--儲存查詢結果

begin

--into指定用來儲存查詢結果的變數

--using用來給繫結變數賦值

execute immediate v_sql

into v_sal

using

&工號;

dbms_output.put_line(

'查詢到的工資為:'

||v_sal)

;end

;/

注意點:在定義這個變數sql時,: 表示佔位符,後面跟自己定義的變數名,格式甚至可以是:『 :1 』 ,執行語句中into是儲存執行後的結果。

通過游標實現動態sql

-- 語法

type type_cursor is ref cursor

[return return_type]

;cursor_name type_cursor;

open cursor_name for dynamic_sql_string

[using bind_argument_list]

;

解釋:

dynamic_sql_string 是動態sql 語句字串

using 子句用於繫結輸入引數變數

-- 舉例

set serveroutput on

;declare

--定義引用游標型別

type c_emp_type is ref cursor

;--定義游標變數

c_emp c_emp_type;

--定義變數儲存查詢sql

v_sql varchar

(200);

--定義變數儲存使用者輸入的部門編號

v_deptno number(

4) :=

&部門編號;

--定義變數儲存查詢結果

v_emp emp%rowtype;

begin

--確定查詢sql

v_sql :=

'select * from emp where deptno = :deptno'

;--開啟游標

open c_emp for v_sql using v_deptno;

loop

fetch c_emp into v_emp;

exit

when c_emp%notfound;

dbms_output.put_line(

'工號:'

||v_emp.empno||

'姓名:'

||v_emp.ename||

'工資:'

||v_emp.sal||

'部門編號:'

||v_emp.deptno)

;end

loop

;--關閉游標

close c_emp;

end;

/

通過dbms_sql程式包

實現步驟:

1. 將要執行的sql 語句或乙個語句塊放到乙個字串變數中

2. 開啟游標(游標)

3. 使用dbms_sql包的parse 過程來分析該字串

4. 使用dbms_sql包的bind_variable 過程來繫結變數

5. 使用dbms_sql包的execute 函式來執行語句

6. 關閉游標(游標)

這個用的少,而且沒有上面的方法直接,所以暫不介紹。

學習Python 第十三天

二叉樹 一,名詞 根邊 樹葉 葉子 沒有兒子 兄弟 具有相同父親的節點 祖父和孫子 路徑路徑的長 深度 從根到該點 高 從該點到葉子 祖先 後裔 真祖先 真後裔 二,樹的實現 class treenode def init self,data,firstchild,nextsibling self....

Java學習第十三天

13.01 常見物件 stringbuffer類的概述 b stringbuffer和string的區別 13.02 常見物件 stringbuffer類的構造方法 b stringbuffer的方法 c 案例演示 13.03 常見物件 stringbuffer的新增功能 public string...

Linux 第十三天學習

一 服務程式apache ilnux系統的配置檔案 服務目錄 etc httpd 主配置檔案 etc httpd conf httpd.conf 資料目錄 var www html 訪問日誌 var log httpd access log 錯誤日誌 var log httpd error log ...