gpt4 book ai didi

带有参数的sqlplus假脱机文件

转载 作者:行者123 更新时间:2023-12-05 02:15:17 25 4
gpt4 key购买 nike

我有一个从命令行执行的 sql 文件,它工作正常。

sqlplus 用户名/密码@DBInstance @filename.sql

我的 filename.sql 看起来是这样的:

set colsep ';'
set echo off
set feedback off
set sqlprompt ''
set trimspool on
set headsep off
set termout off
--set define off
set serveroutput on
set verify off
set autoprint off
set pagesize 0
set linesize 9999
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ', ';

spool STOCK.csv

SELECT ils.item
|| ';'
|| ';'
|| ';'
...
Where loc = store_no
--store_no is typed in the script by hand--
...;
spool off
exit

运行 sqlplus 命令后,我得到包含所有选定行的 csv 文件,这些行由“;”分隔对于特定值 store_no,一切正常。我需要的是将 store_no 作为参数发送,并为每个参数获取新的对应 *csv 文件。所以我可以运行,例如:

sqlplus 用户名/密码@DBInstance @filename.sql 3

并获取 store_no = 3 的 *csv 文件。我已经搜索了一些解决方案,但没有找到正确的解决方案。我想我离这个解决方案不远了:

set colsep ';'
set echo off
set feedback off
set sqlprompt ''
set trimspool on
set headsep off
set termout off
--set define off
set serveroutput on
set verify off
set autoprint off
set pagesize 0
set linesize 9999
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ', ';

spool STOCK.csv

DECLARE
store_no number := &1;
BEGIN

SELECT ils.item
|| ';'
|| ';'
|| ';'
...
Where loc = store_no
... ;
END;
/
spool off
exit

作为输出,我得到这个:PLS-00428:在此 SELECT 语句中需要一个 INTO 子句

考虑到这样的输出,我需要变量来存储整个输出。但我不知道如何使用 DBMS_OUTPUT.PUT_LINE 正确读取 *csv 文件任何人都可以帮助如何执行此任务?提前致谢!

最佳答案

为此您不需要 PL/SQL block 。

假设你有这样一张表:

create table yourTable(loc number, item varchar2(10));
insert into yourTable values (1, 'one');
insert into yourTable values (2, 'two');
insert into yourTable values (3, 'three');

使用这样的脚本test.sql:

set colsep ';'
set echo off
set feedback off
set sqlprompt ''
set trimspool on
set headsep off
set termout off
set serveroutput on
set verify off
set autoprint off
set pagesize 0
set linesize 9999
ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ', ';

spool d:\temp\STOCK.csv

SELECT item
|| ';'
|| ';'
|| ';'
from yourTable
Where loc = &1;
spool off
exit

这个电话:

sqlplus usr/pwd@DB @test.sql 3

你得到一个像这样的文件:

three;;;

如果你想根据参数值假脱机到不同的文件,你可以编辑假脱机命令,例如这个

spool d:\temp\STOCK_&1..csv

如果您传递 3 作为参数值,将提供文件 STOCK_3.csv

关于带有参数的sqlplus假脱机文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52278506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com