사용자 입력없이 sqlplus 스크립트에서 매개 변수의 기본값을 설정하는 방법이 있습니까?paramteters의 기본값이 전달되지 않음 SQLPlus 스크립트
예를 들어, 나는 SQL 스크립트 sessions.sql 있습니다
SET VERIFY OFF SET TERMOUT OFF DEFINE uname = '&1' COLUMN search_uname new_value search_uname SELECT CASE WHEN '&uname' = '' THEN '%' ELSE UPPER('&uname') END AS search_uname FROM dual; SET TERMOUT ON SELECT sid, serial, username FROM v$session WHERE username LIKE '&search_uname';
을 그리고 난 같은 SQLPLUS에서 호출 할 :
SQL> @sessions Enter value for 1: SID SERIAL# USERNAME ---------- ---------- ------------------------------ 56 20577 CONTEXT ..... 236 rows selected. SQL> @sessions "" SID SERIAL# USERNAME ---------- ---------- ------------------------------ 56 20577 CONTEXT ..... 236 rows selected. SQL> @sessions SDE SID SERIAL# USERNAME ---------- ---------- ------------------------------ 113 56675 SDE 165 64881 SDE ..... 43 rows selected. SQL>
난 단지 매개 변수에 대한 빈 값을 전달할 수 있습니다 스크립트를 입력하라는 메시지가 나타나면 스크립트 이름 뒤에 빈 매개 변수를 전달할 수 있습니다. 그러나이 행동은 매우 성가시다. 어떤 종류의 IF 정의 "& 1"은 매우 유용합니다.
불필요한 사용자 상호 작용없이 sqlplus 스크립트 wheter 매개 변수가 정의 된 WHERE 조건을 적용하기 위해 수행해야 할 팁이나 트릭이 있습니까?
SET VERIFY OFF SET TERMOUT OFF column 1 new_value 1 SELECT '' "1" FROM dual WHERE ROWNUM = 0; define uname = '&1' SET TERMOUT ON SELECT sid, serial#, username FROM v$session WHERE username LIKE UPPER(DECODE('&uname', '', '%', '&uname')); undefine 1
멋진 기사를 가리키는 주셔서 대단히 감사합니다. – adrive