[SQL] INSERTED SQL 서버 OUTPUT에 오라클 상당 있습니다. *?
SQLINSERTED SQL 서버 OUTPUT에 오라클 상당 있습니다. *?
SQL Server에서이 같은 일을 할 수있다 :
INSERT INTO some_table (...) OUTPUT INSERTED.*
VALUES (...)
그래서 당신은 열 / 값의 임의의 세트를 삽입 할 수 있고 다시 그 결과를 얻을 수 있습니다. 오라클에서이 작업을 수행 할 수있는 방법이 있습니까?
내가 가지고 올 수있는 최선은 이것이다 :
INSERT INTO some_table (...)
VALUES (...)
RETURNING ROWID INTO :out_rowid
... 사용 : 바인드 변수로 out_rowid. 그리고 다음과 같은 두 번째 쿼리를 사용 :
SELECT *
FROM some_table
WHERE ROWID = :rowid
... 그러나 이것은 열 내에서 모든 것을, 내가 삽입뿐만 아니라 열을 반환로 확실히 동일하지 않습니다.
PL / SQL을 많이 사용하지 않고 이렇게 바람직하게는 하나 개의 쿼리 할 수있는 더 좋은 방법이 있나요?
해결법
-
==============================
1.어쩌면 내가 질문을 이해하지 않지만,이 그것을 할 것인가? (당신은 당신이 다시 원하는 것을 알고 있어야합니다)
어쩌면 내가 질문을 이해하지 않지만,이 그것을 할 것인가? (당신은 당신이 다시 원하는 것을 알고 있어야합니다)
INSERT INTO some_table (...) VALUES (...) RETURNING some_column_a, some_column_b, some_column_c, ... INTO :out_a, :out_b, :out_c, ...
(당신이 수집에서 삽입하면 다른에 "결과"를 검색 할 수있는 또 다른 단어) 수집 다중 행 삽입에 대한에 @Vincent 반환 대량는 FORALL과 함께 작동
-
==============================
2.복귀 절은 BULK COLLECT INTO의 synthax을 지원합니다. (10g)을 고려 :
복귀 절은 BULK COLLECT INTO의 synthax을 지원합니다. (10g)을 고려 :
SQL> CREATE TABLE t (ID NUMBER); Table created SQL> INSERT INTO t (SELECT ROWNUM FROM dual CONNECT BY LEVEL <= 5); 5 rows inserted SQL> DECLARE 2 TYPE tab_rowid IS TABLE OF ROWID; 3 l_r tab_rowid; 4 BEGIN 5 UPDATE t SET ID = ID * 2 6 RETURNING ROWID BULK COLLECT INTO l_r; 7 FOR i IN 1 .. l_r.count LOOP 8 dbms_output.put_line(l_r(i)); 9 END LOOP; 10 END; 11 / AADcriAALAAAAdgAAA AADcriAALAAAAdgAAB AADcriAALAAAAdgAAC AADcriAALAAAAdgAAD AADcriAALAAAAdgAAE
그것은 다중 행 UPDATE 내 버전 (10.2.0.3.0)와 DELETE하지만 INSERT와 함께 작동합니다 :
SQL> DECLARE 2 TYPE tab_rowid IS TABLE OF ROWID; 3 l_r tab_rowid; 4 BEGIN 5 INSERT INTO t (SELECT ROWNUM FROM dual CONNECT BY LEVEL <= 5) 6 RETURNING ROWID BULK COLLECT INTO l_r; 7 FOR i IN 1 .. l_r.count LOOP 8 dbms_output.put_line(l_r(i)); 9 END LOOP; 10 END; 11 / ORA-06550: line 7, column 5: PL/SQL: ORA-00933: SQL command not properly ended
어쩌면 당신은 최신 버전 (11g?)와 COLLECT INTO 다중 행 INSERT들에 대해 지원되는 BULK 있나요?
from https://stackoverflow.com/questions/1074843/is-there-an-oracle-equivalent-to-sql-servers-output-inserted by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 함수 기반 인덱스 (0) | 2020.06.15 |
---|---|
[SQL] 포스트 그레스 가장 가까운 운영자가 있습니까? (0) | 2020.06.15 |
[SQL] 외래 키 캐스케이드 여러 경로 및주기의 문제는 무엇인가? (0) | 2020.06.15 |
[SQL] 같은 테이블의 하위 쿼리와 MySQL을 UPDATE (0) | 2020.06.15 |
[SQL] 오라클의 OR, 대 한 빠른? (0) | 2020.06.15 |