2011-10-13 3 views
4

누구나 바인드 변수 이름에 허용되는 문자가 나열되어있는 곳을 알려주시겠습니까? 몇 시간 동안 Oracle SQL 문서를 파고 들지 않고 보냈습니다.Oracle 바인드 매개 변수 자리 표시 자에는 어떤 문자가 허용됩니까?

는 말은 "아이디"다음에 :

SELECT * FROM mytable WHERE id = :id 

일예를 ": some.id"처럼 점을 사용할 수 있습니까? 점이없는 버전과 똑같이 작동합니까?

+0

왜 직접 해보지 않으시겠습니까? –

+0

버전 10부터 모든 Oracle 버전에 대해 문서화되어 유효해야합니다. –

+0

EXECUTE IMMEDIATE를 사용하지 않는 한 PL/SQL은 이러한 종류의 바인드 변수를 필요로하지 않습니다. EXECUTE IMMEDIATE인가요? 또는 SQLplus, JDBC 또는 ADO.NET과 같은 다른 컨텍스트에서 바인드 변수를 사용 하시겠습니까? – Codo

답변

2

이 두 페이지는 바인드 변수가 "합법적 인 Oracle 식별자"여야합니다. 발견 한 문서에서 점이 이 합법적 인 식별자의 일부일 수 있다고 명확하게 말하지 않았습니다. 테이블 이름과 바인드 변수 이름으로 도트를 사용할 수 있었지만, 권장하지 않는 것처럼 인 것처럼 보입니다. BIND 변수 명명 규칙을 가질

페이지 (이 페이지는 바인드 변수가 법적 식별자를해야합니다 상태) : http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements008.htm

: 법적 식별자를 설명

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

페이지를

이 페이지에서 도트가 유효한 것임을 알리는 내용을 찾을 수 없습니다 식별자의 일부 (E.G. 테이블 또는 바인드 변수 이름). $ 및 #은 합법적이지만 권장하지는 않으므로 "." 이 작동 할 수는 있지만 분명히 권장되지 않습니다 ( 이 페이지에서 합법적으로 언급되지 않음)

바인딩 변수 이름은 항목 이름과 일치해야합니다. 바인드 변수 이름은 대소 문자를 구분하지 않습니다. 바인드 변수 이름은 30자를 초과 할 수 없습니다. 즉, 유효한 Oracle 식별자 여야합니다.

유효한 오라클 식별자 (유효한 식별자 인 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;  

이 작동하지만, 바인드 변수 또는 다른 개체 이름에 기간/점

권장/정당하지 않은 위의 설명서에 따라 수 ...

Nonquoted 식별자가 databa에서 영숫자 문자를 포함 할 수 있습니다 :

이 말해 오라클 스키마 개체 명명 페이지 (_), 달러 기호 ($) 및 파운드 기호 (#)와 같은 일련의 문자 집합으로 구성됩니다. 데이터베이스 링크에는 마침표 (.)가 포함될 수도 있습니다.) 및 "at"기호 (@). Oracle은 인용 부호가없는 식별자에서 $ 및 #을 사용하지 않을 것을 강력히 권유합니다.

0

는 또한 문제가이 공식 오라클 문서를 발견했다 : 다음 : ("_ normallyinvalid")와 이전에 나열된 규칙의 대부분을 http://docs.oracle.com/cd/E14072_01/appdev.112/e10646/oci04sql.htm#i420655 그 위에

, 당신이 자리를 인용 수 있다는 것을 밝혀 링크가 관련성이 없습니다. 이 제안을 제공하는 오라클 문서를 찾을 수 없습니다. 인터넷에 관한 힌트.

관련 문제