이 작동합니다Oracle SQL Developer에서 변수를 실제로 얻는 방법은 무엇입니까? 이런 식으로 대체 변수를 사용하여 Oracle SQL Developer에서
DEFINE var_t1_id int = 2601;
DEFINE var_t2_id int = (SELECT t2_id FROM table1 WHERE t1_id = &var_t1_id);
DEFINE var_t3_id int = (SELECT t3_id FROM table1 WHERE t1_id = &var_t1_id);
SELECT *
FROM table2
WHERE t2_id = &var_t2_id;
SELECT *
FROM table3
WHERE t3_id = &var_t3_id;
비록를, 내가 뭔가에 2601을 변경하고 쿼리를 다시 실행하면, SQL 개발자는 위해 2601 계속 사용 대체 !!!
variable var_t1_id number;
variable var_t2_id number;
variable var_t3_id number;
exec :var_t1_id := 2601;
exec SELECT t2_id INTO :var_t2_id FROM table1 WHERE t1_id = :var_t1_id;
exec SELECT t3_id INTO :var_t3_id FROM table1 WHERE t1_id = :var_t1_id;
SELECT *
FROM table2
WHERE t2_id = :var_t2_id;
SELECT *
FROM table3
WHERE t3_id = :var_t3_id;
이 : 아니 내가 원하는 ...
나는이 시도DEFINE var_t1_id int = 2601;
DEFINE var_t2_id int = (SELECT t2_id FROM table1 WHERE t1_id = (SELECT &&var_t1_id from dual));
DEFINE var_t3_id int = (SELECT t3_id FROM table1 WHERE t1_id = (SELECT &&var_t1_id from dual));
SELECT *
FROM table2
WHERE t2_id = (SELECT &&var_t2_id FROM dual);
SELECT *
FROM table3
WHERE t3_id = (SELECT &&var_t3_id FROM dual);
을하지만 아무도 제대로 작동하지 않습니다 - 나는, 스크립트가 나를 메시지를 표시하지 않고 실행해야 의미 값을 ...
어떻게 해결할 수 있습니까?
저는이 모든 것이 매우 단순한 SQL Server에 익숙합니다 ... 물론 오라클의 지식을 놓치고 있습니다 ... 왜 여기에 팁을 요청 하는지요.
으로 시도 할 수 있습니다. 많은 보고서 (예 : 데이터 사전 보고서보기)를 사용하면 "비공개"로 시연 된이 동작을 볼 수 있습니다. –
두 번째 코드 블록에 대해 이야기하고 있습니까? 셋째, DEFINE 섹션이 있습니다. 바인드 바를 정의하는 올바른 방법일까요? – user3341592
SQL Developer에서 대체 및 바인드 변수가 어떻게 작동하는지 (필자가 제공 한 특정 예가 아님)에 대해 설명했습니다. 오라클 관점에서 대체 변수는 주로 SQL * Plus 스크립트에서 사용됩니다 (잘 문서화 된 동작). 바인드 변수를 사용하여 일반적으로 SQL Developer에서 익명 블록 또는 객체 (예 : 패키지) 또는 DML로 사용합니다. BTW, Justin Cave는 비슷한 질문에 대한 좋은 답변을 가지고 있습니다. http://stackoverflow.com/questions/5653423/how-do-i-use-variables-in-oracle-sql-developer –