오라클의 SELECT 쿼리에서 변수 선언 및 값 설정
SQL Server에서는 다음을 사용할 수 있습니다.
DECLARE @variable INT;
SELECT @variable= mycolumn from myTable;
Oracle에서도 동일한 작업을 수행할 수 있는 방법은 무엇입니까?현재 다음을 시도하고 있습니다.
DECLARE COMPID VARCHAR2(20);
SELECT companyid INTO COMPID from app where appid='90' and rownum=1;
왜 안 되는 거죠?
DECLARE
the_variable NUMBER;
BEGIN
SELECT my_column INTO the_variable FROM my_table;
END;
쿼리가 1개의 행만 반환하는지 확인합니다.
기본적으로 SELECT INTO 문은 하나의 행만 반환해야 합니다.그렇지 않으면 PL/SQL은 사전 정의된 예외 TOO_MANY_ROWS를 발생시키고 INTO 절의 변수 값은 정의되지 않습니다.WHERE 절이 하나의 행에만 일치할 수 있을 만큼 충분히 구체화되어 있는지 확인하십시오.
행이 반환되지 않으면 PL/SQL은 NO_DA를 발생시킵니다.TA_FOUND. COUNT(*)나 AVG()와 같은 집계 함수의 결과를 선택하여 이 예외를 방지할 수 있습니다.이러한 함수는 조건에 일치하는 행이 없는 경우에도 단일 값을 반환합니다.
A 선택...BULK COLLECT INTO 문은 여러 행을 반환할 수 있습니다.결과를 유지할 수집 변수를 설정해야 합니다.결과 세트 전체를 유지하는 데 필요한 만큼 확장되는 연관 배열 또는 중첩된 테이블을 선언할 수 있습니다.
암시 커서 SQL과 그 속성 %NOTFOUND, %FOUND, %ROWCOUNT 및 %ISOPEN은 SELECT INTO 문의 실행에 대한 정보를 제공합니다.
무엇을 원하는지는 잘 모르겠지만 PL/SQL에서는 간단하게 할 수 있습니다.
DECLARE
v_variable INTEGER;
BEGIN
SELECT mycolumn
INTO v_variable
FROM myTable;
END;
올리.
추가 사항 1개:
에서 변환하는 경우tsql
로.plsql
에 대해 걱정해야 한다.no_data_found
예외.
DECLARE
v_var NUMBER;
BEGIN
SELECT clmn INTO v_var FROM tbl;
Exception when no_data_found then v_var := null; --what ever handle the exception.
END;
인tsql
한다면no data found
변수는 다음과 같습니다.null
하지만 아니다exception
ORA-01422: exact fetch가 요청된 행 수보다 많은 행을 반환합니다.
where 조건을 사용하여 정확한 레코드를 지정하지 않으면 위의 예외가 발생합니다.
DECLARE
ID NUMBER;
BEGIN
select eid into id from employee where salary=26500;
DBMS_OUTPUT.PUT_LINE(ID);
END;
단일 행 출력을 select에서 query로 변수에 저장하는 경우:
v_display varchare(20)를 선언합니다. 사용자 이름을 v_display FROM 사용자 이름으로 선택합니다. 여기서 user_id = '7';
단일 레코드의 값을 변수 v_variable에 저장합니다.
select에서 query로 출력되는 여러 행을 변수에 저장하는 경우:
listagg 기능을 사용해야 합니다.listagg는 컬럼의 결과 행을 단일 컬럼으로 연결하며 그것들을 구별하기 위해 특수 기호를 사용할 수 있습니다.그룹 내(사용자 이름으로 정렬됨)에서 아래 SELECT listagg(사용자 이름 | ' , )와 같이 쿼리를 v_username FROM 사용자로 사용합니다.
언급URL : https://stackoverflow.com/questions/7553901/declaring-a-variable-and-setting-its-value-from-a-select-query-in-oracle
'sourcecode' 카테고리의 다른 글
React 사용의 장점과 단점JS (0) | 2023.03.25 |
---|---|
반응 요소의 너비를 얻는 방법 (0) | 2023.03.25 |
오류가 발생하는 이유: "Query" 유형의 필드 xx를 쿼리할 수 없습니까? (0) | 2023.03.25 |
연락처 양식 7의 양식 액션 URL을 변경하는 방법 (0) | 2023.03.25 |
봄의 각 테스트 전에 데이터베이스를 재생성하려면 어떻게 해야 합니까? (0) | 2023.03.25 |