任何人都可以請我指出允許綁定變量名稱的字符在哪裏列出?我花了幾個小時深入挖掘Oracle SQL文檔無濟於事。Oracle允許哪些字符綁定參數佔位符?
我的意思 「:ID」 中的以下內容:
SELECT * FROM mytable WHERE id = :id
例如可以使用點像「:some.id」嗎?它的功能是否與沒有點的版本完全相同?
任何人都可以請我指出允許綁定變量名稱的字符在哪裏列出?我花了幾個小時深入挖掘Oracle SQL文檔無濟於事。Oracle允許哪些字符綁定參數佔位符?
我的意思 「:ID」 中的以下內容:
SELECT * FROM mytable WHERE id = :id
例如可以使用點像「:some.id」嗎?它的功能是否與沒有點的版本完全相同?
這兩個頁面的狀態綁定變量必須是「合法的Oracle標識符」 我找到的文檔沒有具體說明點可以 是法定標識符的一部分。我能夠在 中使用一個點名作爲綁定變量名稱,但看起來它不是 不推薦。
PAGES具有BIND變量命名約定 (這些頁陳述綁定變量必須是合法的標識符):
http://www.utoug.org/i/doc/concept_bind_var.htm
http://docs.oracle.com/cd/E23903_01/doc/doc.41/e21674/concept_ses_val.htm#BEIEGCCC
PAGE描述合法的標識符: http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements008.htm
我在這個頁面上找不到任何東西,說點是合法的 標識符的一部分(E.G.表或綁定變量名稱),但在數據庫鏈接中除外。 即使$和#是合法的,他們甚至不被推薦,所以「。」 可能會工作,但顯然不推薦(甚至沒有提到作爲合法的 此頁)
綁定變量名稱必須對應於項目名稱。 綁定變量名稱不區分大小寫。 綁定變量名稱不能超過30個字符(即,它們必須是有效的Oracle標識符)。
我知道,一個有效的Oracle IDENTIFER(基於ORACLE的定義一個合法的標識符 )不能以數字, 開始,可以有一些特殊字符,如$和。但是如果有 特殊字符,標識符必須用雙引號。
我能得到一個標識符以點處於困境 變量的工作,但我不得不把雙引號來綁定 變量時綁定變量曾在一個句點。
create or replace function F0416B
RETURN VARCHAR2
is
V_STMT VARCHAR2(1999);
V_RESULT VARCHAR2(1999);
BEGIN
V_STMT := 'INSERT INTO TEST0411(FIELD1, FIELD2) VALUES (:"A.1" , :"A.2")';
EXECUTE IMMEDIATE V_STMT USING 'AS201', 'AS202';
RETURN 'INSERT-OK';
COMMIT;
EXCEPTION
WHEN OTHERS THEN RETURN SQLERRM;
END;
是不合法的/推薦...
告訴我:
不帶引號的標識符可以從databa只包含字母數字字符se字符集和下劃線(_),美元符號($)和井號(#)。數據庫鏈接也可以包含句點(。)和「at」符號(@)。 Oracle強烈建議您不要在非引用標識符中使用$和#。
我也很難找到這Oracle官方文檔:http://docs.oracle.com/cd/E14072_01/appdev.112/e10646/oci04sql.htm#i420655
最重要的是,事實證明,你可以引述佔位符(「_ normallyinvalid」),然後大部分在前面列出的規則鏈接停止相關。我找不到任何提供此建議的Oracle文檔;只是在互聯網上暗示。
你爲什麼不自己嘗試一下呢? –
我需要確保它有文檔記錄,因此對於版本10以上的所有Oracle版本都有效。 –
除非您使用EXECUTE IMMEDIATE,否則PL/SQL不需要這種綁定變量。這是否爲EXECUTE IMMEDIATE?或者你是指在其他上下文中使用綁定變量,如SQLplus,JDBC或ADO.NET? – Codo