간단한 Oracle 변수 SQL 할당
한 시간 동안 조사를 했음에도 불구하고 변수를 올바르게 정의하고 SQL에 사용하는 방법을 알 수 없습니다.
이것이 지금까지 제가 만든 것입니다.
DECLARE startDate DATE := to_date('03/11/2011', 'dd/mm/yyyy');
그 중에서 나는 다음과 같은 답변을 받습니다.
ORA-06550: 1행, 63열: PLS-00103: 다음 중 하나를 예상할 때 "end-of-file" 기호가 발생했습니다.
begin function package pragma procedure 하위 유형 폼 현재 커서 사용
세부 정보: DELCOME startDate DATE := to_date ('03/11/2011', 'dd/mm/yyyy'); 1행 ORA-06550: 1행, 63열: PLS-00103: 다음 중 하나를 예상할 때 "end-of-file" 기호가 발생했습니다.
begin function package pragma procedure 하위 유형 폼 현재 커서 사용
저는 그런 간단한 일을 하는 방법을 찾고 싶습니다!
변수 선언이 정확합니다.
그DECLARE
키워드는 PL/SQL 블록의 범위가 지정된 변수를 정의하는 데 사용됩니다.BEGIN
그리고.END;
). 이 변수를 어떻게 사용하시겠습니까?
다음 PL/SQL이 잘 작동합니다.
DECLARE
startDate DATE := to_date('03/11/2011', 'dd/mm/yyyy');
reccount INTEGER;
BEGIN
SELECT count(*) INTO reccount
FROM my_table tab
WHERE tab.somedate < startDate;
dbms_output.put_line(reccount);
END;
문장을 사용하여 간단한 문자열 대체 변수를 사용할 수도 있습니다.SQL/PLUS 또는 TOAD와 같은 클라이언트에 적합합니다.
DEFINE start_date = "to_date('03/11/2011', 'dd/mm/yyyy')"
SELECT COUNT(*) from my_table tab where tab.some_date < &start_date;
Toad에서 시도하는 작업을 수행하기 위해 변수를 선언할 필요가 전혀 없습니다.단순히 변수에 콜론을 접두사로 붙이면 Toad가 쿼리를 실행할 때 변수 값을 입력하라는 메시지를 표시합니다.예를 들어,
select * from all_tables where owner = :this_is_a_variable;
처음에 작동하지 않으면 편집기의 아무 곳이나 마우스 오른쪽 단추로 클릭하고 "대체 변수 프롬프트"가 선택되어 있는지 확인합니다.
SQL Server에서 변수를 처리하는 방식과 유사하게(또는 SQL*Plus에서 동일한 작업을 수행하려면) 다음과 같이 작성할 수 있습니다.
var this_is_a_variable varchar2(30);
exec :this_is_a_variable := 'YOUR_SCHEMA_NAME';
print this_is_a_variable;
select * from all_tables where owner = :this_is_a_variable;
그러나 Toad에서 이 작업을 수행하려면 일반적인 "Execute statement" 명령이 아닌 "Execute as script"를 통해 실행해야 합니다.
Oracle의 PL/SQL은 SQL이 아닙니다.
PL/SQL은 절차 언어입니다.SQL은 절차적이지는 않지만 사용자가 "&var" 구문을 통해 입력할 수 있는 "variables"을 정의할 수 있습니다(http://www.orafaq.com/node/515) . 참조).
이것은 오래된 게시물이지만, 만약 누군가가 이 문제에 발을 헛디뎌질 경우(나는 방금 한 것처럼), 당신은 CTE로 이 문제를 처리할 수 있습니다.
with params as (
select date '2011-11-03' as startdate
from dual
)
select . . .
from params cross join
. . .
SQL Server에서 거의 동일한 구문이 작동합니다(단,date
-특정한 것과from dual
).
해결책
DEF startDate = to_date('03/11/2011', 'dd/mm/yyyy');
Select &startDate from dual;
언급URL : https://stackoverflow.com/questions/8039907/simple-oracle-variable-sql-assignment
'programing' 카테고리의 다른 글
오라클 저장 프로시저 실행 시간이 실행 방식에 따라 크게 증가하는 이유는 무엇입니까? (0) | 2023.10.22 |
---|---|
Angular의 사용자 정의 양식 구성요소에서 FormControl에 액세스합니다. (0) | 2023.10.22 |
ajax를 사용하여 로드 데이터 2개를 선택하면 옵션을 선택할 수 없습니다. (0) | 2023.10.22 |
외국 열쇠가 왜 이래요? (0) | 2023.10.22 |
DataTable을 직렬화할 수 없습니다.DataTable 이름이 설정되지 않았습니다. (0) | 2023.10.22 |