簡體   English   中英

Oracle SQL Developer:插入值作為從另一個 sql 文件中選擇

[英]Oracle SQL Developer : Insert into values as select from another sql file

是否可以通過外部腳本將值從 SQL Developer 插入到 Oracle SQL 表中

INSERT
INTO TABLE_A
  (
    ID,
    VERSION
  ) VALUES (@select.sql)

文件 select.sql 中的語句看起來像

SELECT ID, VERSION from TABLE_X;

這在 SQL Developer 20 中使用“作為腳本運行”(F5)(或在 PL/SQL Developer 命令窗口中,就此而言)不起作用。 如果它必須從 SQL Developer 工作,那你就不走運了。

如果您清理語法並將調用放在自己的行上,它將在 SQL*Plus 和 SQLcl 中工作。

測試插入.sql

insert into table_a
( id
, version )
@@select.sql
/

選擇.sql

select rownum, 1
from   xmltable('1 to 10')

(請注意,您必須決定哪個腳本包含終止;/ 。)

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 9 11:27:40 2020
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Wed Sep 09 2020 11:26:30 +01:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0


SQL> @test_insert

10 rows created.

SQL>

SQL> l
  1  insert into table_a
  2  ( id
  3  , version )
  4  select rownum, 1
  5* from   xmltable('1 to 10')

按照你的說法,我認為這是不可能的。

如果你付出一些努力,這可能會奏效:

  • 如果select.sql文件位於數據庫服務器上,位於作為 Oracle 目錄對象的目錄中,並且
  • 如果用戶 - 應該運行此代碼 - 對該目錄具有read權限,則
  • 編寫一個 PL/SQL 腳本
    • 使用UTL_FILEselect.sql組成一個聲明(你的例子顯示只有一條線,我想有可能是有復雜的語句),並把它變成一個局部變量
    • 或者,您甚至可以使用select.sql文件作為只有一列的外部表
    • 編寫另一個 - insert - 語句(請注意,您的語句是錯誤的;那里不應該有values關鍵字)
    • 使用execute immediate執行執行它(所以是的,這是動態 SQL)

我願意這樣做嗎? 我不這么認為,但是 - 你可能會,現在你知道

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM