當前位置:首頁 » 編程語言 » plsql變數綁定

plsql變數綁定

發布時間: 2022-06-18 21:06:18

1. 動態sql中的重復佔位符如何與綁定變數進行

BEGIN calc_stats(:x, :x, :y, :x); END 是一個PL/SQL 代碼段,而非 insert into t6 (a,b,c) values (:x,:y,:x) 這樣的DML,標准SQL語句。

在EXECUTE IMMEDIATE 中,利用USING語句綁定變數時,Oracle遵循針對PL/SQL存儲過程使用佔位符名稱匹配的原則,而針對SQL語句則採用佔位符位置匹配的原則。

PL/SQL 用戶指南與參考 中的 例子如下:

動態SQL語句中的佔位符與USING子句中的綁定參數是位置關聯的,而不是名稱關聯。所以,如果在SQL語句中同樣的佔位符出現兩次或多次,那麼,它的每次出現都必須與一個USING子句中的綁定參數相關聯。例如下面的動態字元串:

sql_stmt := 'INSERT INTO payroll VALUES (:x, :x, :y, :x)';

我們可以為動態字元串編寫對應的USING子句:

EXECUTE IMMEDIATE sql_stmt USING a, a, b, a;

但 是,動態PL/SQL塊中只有唯一的佔位符才與USING子句中的綁定參數按位置對應。所以,如果一個佔位符在PL/SQL塊中出現兩次或多次,那麼所有 這樣相同的佔位符都只與USING語句中的一個綁定參數相對應。比如下面的例子,第一個佔位符(x)與第一個綁定參數(a)關聯,第二個佔位符(y)與第 二個綁定參數(b)關聯。

DECLARE
a NUMBER := 4;
b NUMBER := 7;
BEGIN
plsql_block := 'BEGIN calc_stats(:x, :x, :y, :x); END';

EXECUTE IMMEDIATE plsql_block
USING a, b;
...

END;
---------------------------------------------------------------------------------------------
CREATE TABLE T1 (N1 NUMBER, N2 NUMBER,N3 NUMBER,N4 NUMBER);

BEGIN
EXECUTE IMMEDIATE 'INSERT INTO T1(N1,N2,N3,N4) VALUES (:N1,:N2,:N2,:N1)' USING 1,2;
END;
/

*
ERROR at line 1:
ORA-01008: not all variables bound
ORA-06512: at line 2

BEGIN
EXECUTE IMMEDIATE 'BEGIN INSERT INTO T1(N1,N2,N3,N4) VALUES (:N1,:N2,:N2,:N1); END;' USING 1,2;
END;
/

PL/SQL procere successfully completed.

SELECT * FROM T1;

N1 N2 N3 N4
---------- ---------- ---------- ----------
1 2 2 1

----------------------------------------------

2. plsql中聲明變數時可以指定哪種類型的約束

主鍵約束(Primary Key constraint):要求主鍵列數據唯一,並且不允許為空。

唯一約束(Unique constraint):要求該列唯一,允許為空,但只能出現一個空值。

檢查約束(Check constraint):某列取值范圍限制,格式限制等,如有關年齡、郵箱(必須有@)的約束。

默認約束(Default constraint):某列的默認值,如在資料庫里有一項數據很多重復,可以設為默認值。

外鍵約束(Foreign Key constraint):用於在兩個表之間建立關系,需要指定引用主表的哪一列。


3. plsql配置環境變數

本方法是通過使用ORACLE官方提供的精簡版客戶端,即綠色免安裝的客戶端。
下載地址(此處提供的是官方各版本下載地址):
Windows
32位系統中使用的客戶端下載地址
其他系統環境中使用的客戶端下載地址
Instant
client的版本很多:主要是Basic和Basic
Lite。
Basic版本包括了所有的支持運行OCI、OCCI、JDBC、JDBC-OCI的文件,支持多種語言。
Basic
Lite是Basic版本的精簡版,只包括了英文的錯誤描述,也只支持Unicode、ASCII和歐洲字元集。
因此,如果資料庫伺服器是中文字元集(如
SIMPLIFIED
CHINESE_CHINA.ZHS16GBK),則必須下載Basic版本。

4. 在plsql中,使用綁定變數的方法除了動態sql外,還有別的方式嗎

plsql裡面直接使用變數也是使用了綁定變數的。
比如在存儲過程中使用
select empno from emp where empno=p_empno ;
其實使用的也是綁定變數。
在內存中是類似這樣的格式:
SELECT EMPNO FROM EMP WHERE EMPNO=:B1

當然這也和資料庫參數plsql_optimize_level,但是一般都不會關注。

5. plsql里的ref是什麼意思

這是oracle的綁定變數。 using後面的l_dept綁定到:1, 和下面是一個意思: execute immediate 'select dname, loc from dept where deptno = '|| l_dept 建議用綁定變數的方法做開發

6. 在PLSQLdeveloper上面執行下列代碼時報錯 ORA-01008:並非所有變數都已綁定,新手求解,

你倒是說說plsql里是啥錯啊,就這么貼一堆代碼,誰也沒心思看啊,也沒個注釋說明啥的,也不弄語法高亮設置

7. PLSQL中動態SQL關於綁定變數使用

'create sequence seq_test increment by 1 start with :ID '; 這一句, 應該寫start with :1 吧.

熱點內容
編程知識卡片 發布:2025-03-22 05:40:40 瀏覽:371
搭建的網站伺服器連接失敗 發布:2025-03-22 05:39:08 瀏覽:592
浪潮的伺服器地址 發布:2025-03-22 05:37:30 瀏覽:410
凱撒加密在線 發布:2025-03-22 05:36:45 瀏覽:656
空調壓縮機銘牌含義 發布:2025-03-22 05:27:03 瀏覽:62
編程強省 發布:2025-03-22 05:26:21 瀏覽:142
跨雲伺服器平台 發布:2025-03-22 05:25:30 瀏覽:654
安卓如何在寶馬車上放歌 發布:2025-03-22 05:06:15 瀏覽:284
命令提示符進入文件夾 發布:2025-03-22 05:00:09 瀏覽:408
免費微商城源碼 發布:2025-03-22 04:40:25 瀏覽:826