Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 创建bat文件以运行查询_Oracle_Plsql - Fatal编程技术网

Oracle 创建bat文件以运行查询

Oracle 创建bat文件以运行查询,oracle,plsql,Oracle,Plsql,我需要创建一个bat文件,其中包含一个运行包的查询。 我使用plsqldeveloper来开发这个包。其用户名、密码和数据库分别为user、pswd和db1。 运行包的查询是: SELECT COLUMN1 AS "LAST NAME", COLUMN2 AS "FIRST NAME", COLUMN3 AS "LOCATION" FROM TABLE(PKG.GET_SUM('09-NOV-2010','12-NOV-2010')) 有人能帮我

我需要创建一个bat文件,其中包含一个运行包的查询。 我使用plsqldeveloper来开发这个包。其用户名、密码和数据库分别为user、pswd和db1。 运行包的查询是:

SELECT        
   COLUMN1 AS "LAST NAME",
   COLUMN2 AS "FIRST NAME",
   COLUMN3 AS "LOCATION"       
FROM TABLE(PKG.GET_SUM('09-NOV-2010','12-NOV-2010'))
有人能帮我写些什么代码来创建bat文件吗

提前谢谢

这是我的密码

connect usr/pswd@db1 
SET NEWPAGE 0 
SET SPACE 0 
SET LINESIZE 80 
SET PAGESIZE 100 
COLUMN COLUMN1 HEADING 'LAST NAME' 
COLUMN COLUMN2 HEADING 'FIRST NAME' 
COLUMN COLUMN3 HEADING 'LOCATION' 
spool c:\temp\get_sums.csv 
SELECT COLUMN1 
    ,COLUMN2 
    ,COLUMN3 
    ,COLUMN4 
    ,COLUMN5 
    , COLUMN6 
    ,COLUMN7,
    COLUMN8 
    ,COLUMN9 
FROM TABLE(ACTY_SUMM('09-NOV-2010','12-NOV-2010')) 
/ 
spool off 
exit;
我更改了行大小和页面大小。但无法获得理想的格式。我有12个专栏。我需要报告格式的

嗨,我试图更改线条大小,但仍然没有得到所需的格式。我想要以下格式的报告

FirstNAME LASTNAME LOCATION  A  B  C  D  E  F  G  H  I
NAME1     LNAME1    LOC1     A1 B1 C1 D1 E1 F1 G1 H1 I1
NAME2     LNAME2    LOC1     A2 B2 C2 D2 E2 F2 G2 H2 I2
                    LOCTOT   
NAME3     LNAME3    LOC2     A3 B3 C3 D3 E3 F3 G3 H3 I3
                    LOCTOT
我需要一行中的所有列以及每个列下每个人的相应值,每个位置后将有位置总计,最后将有grant总计。我试过线条大小、页面大小等等。仍然没有结果。有人能帮我把这份报告做成这种格式吗

到目前为止,客户端可以使用csv格式。但挑战是我没有得到标题。这是我的sql脚本代码

connect usr/pwd@db1
SET NEWPAGE 0
SET LINESIZE 100
SET PAGESIZE 0
spool c:\temp\q1.csv

COLUMN COLUMN1 HEADING 'LAST NAME'
COLUMN COLUMN2 HEADING 'FIRST NAME'
COLUMN COLUMN3 HEADING 'LOCATION'
COLUMN COLUMN4 HEADING 'A'
COLUMN COLUMN5 HEADING 'B'
COLUMN COLUMN6 HEADING 'C'
COLUMN COLUMN7 HEADING 'D'
COLUMN COLUMN8 HEADING 'E'
COLUMN COLUMN9 HEADING 'F'
COLUMN COLUMN10 HEADING 'G'
COLUMN COLUMN11 HEADING 'H'
COLUMN COLUMN12 HEADING 'I'
SELECT 
    '"'||COLUMN1
    ||'","'|| COLUMN2 
    ||'","'|| COLUMN3 
    ||'","'|| COLUMN4 
    ||'","'|| COLUMN5 
    ||'","'|| COLUMN6 
    ||'","'|| COLUMN7
    ||'","'|| COLUMN8 
    ||'","'|| COLUMN9 
    ||'","'|| COLUMN10
    ||'","'|| COLUMN11
   ||'","'|| COLUMN12||'"'
FROM
TABLE(ACTY_SUM('09-NOV-2010','12-NOV-2010')) 
/ 

spool off
exit;

您能否就此问题提出建议

首先创建一个脚本来运行查询。您需要将输出捕获到文件中,因此使用SPOOL命令

connect usr/pswd@db1
spool c:\temp`get_sums.lst

SELECT 

   COLUMN1 AS "LAST NAME",
   COLUMN2 AS "FIRST NAME",
   COLUMN3 AS "LOCATION"

FROM TABLE(PKG.GET_SUM('09-NOV-2010','12-NOV-2010'))
/

spool off
exit;
将其保存到名为get_sums.sql的文件中。然后需要一个批处理文件get_sums.bat,如下所示:

sqlplus /nolog @C:\get_sums.sql
可以在.SQL文件中包含各种SQL*Plus命令,以格式化输出


显然,链接到格式化文档是不够的

将LINESiZE设置为默认值80没有意义。如果要选择九列,并且希望所有九个值都显示在一行上,则需要设置线宽,使其足够长以容纳所有列。这意味着您需要将LINESIZE设置为所有列的宽度加上八(ninbe列之间的间隙空间数)之和

虽然我看你已经试过了

SET SPACE 0
这会导致所有选定的列在一条长线中一起运行,这是一种非常不寻常的报告布局方式。但如果这确实是您想要的,那么在计算线宽的正确值时,请忽略间隙空间


格式化您发布的代码后,我看到您正在输出到
.csv
。你为什么不说你首先要导出逗号分隔的值

有几种方法可以做到这一点。最简单的方法是用逗号连接查询的投影:

SELECT 
    '"'||COLUMN1 
    ||'","'|| COLUMN2 
    ||'","'|| COLUMN3 
    ||'","'|| COLUMN4 
    ||'","'|| COLUMN5 
    ||'","'|| COLUMN6 
    ||'","'|| COLUMN7
    ||'","'|| COLUMN8 
    ||'","'|| COLUMN9 ||'"'
FROM TABLE(ACTY_SUMM('09-NOV-2010','12-NOV-2010')) 
/ 
双引号是可选的字段终止符,它将处理任何包含逗号的字符串列


“我不想要单独的值。我 编辑我的帖子。请建议“

以下是一些测试数据:

SQL> select * from t23
  2  /

♀FIRSTNAME            LASTNAME              LOCATION    A   B   C   D   E   F
--------------------  --------------------  ----------  --  --  --  --  --  --
G   H   I
--  --  --
NAME1                 LNAME1                LOC1        A1  B1  C1  D1  E1  F1
G1  H1  I1

NAME2                 LNAME2                LOC1        A2  B2  C2  D2  E2  F2
G2  H2  I2

NAME3                 LNAME3                LOC2        A3  B3  C3  D3  E3  F3
G3  H3  I3


SQL> 
我可以使用SQL*Plus格式化命令生成您想要的基本布局

SQL> set linesize 100
SQL> break on location
SQL> compute count of location on location
SQL> compute count of location on report
SQL> r
  1* select * from t23
♀FIRSTNAME            LASTNAME              LOCATION    A   B   C   D   E   F   G   H   I
--------------------  --------------------  ----------  --  --  --  --  --  --  --  --  --
NAME1                 LNAME1                LOC1        A1  B1  C1  D1  E1  F1  G1  H1  I1
NAME2                 LNAME2                            A2  B2  C2  D2  E2  F2  G2  H2  I2
                                            ----------
                                                     2
NAME3                 LNAME3                LOC2        A3  B3  C3  D3  E3  F3  G3  H3  I3
                                            ----------
                                                     1

SQL> 

首先创建一个脚本来运行查询。您需要将输出捕获到文件中,因此使用SPOOL命令

connect usr/pswd@db1
spool c:\temp`get_sums.lst

SELECT 

   COLUMN1 AS "LAST NAME",
   COLUMN2 AS "FIRST NAME",
   COLUMN3 AS "LOCATION"

FROM TABLE(PKG.GET_SUM('09-NOV-2010','12-NOV-2010'))
/

spool off
exit;
将其保存到名为get_sums.sql的文件中。然后需要一个批处理文件get_sums.bat,如下所示:

sqlplus /nolog @C:\get_sums.sql
可以在.SQL文件中包含各种SQL*Plus命令,以格式化输出


显然,链接到格式化文档是不够的

将LINESiZE设置为默认值80没有意义。如果要选择九列,并且希望所有九个值都显示在一行上,则需要设置线宽,使其足够长以容纳所有列。这意味着您需要将LINESIZE设置为所有列的宽度加上八(ninbe列之间的间隙空间数)之和

虽然我看你已经试过了

SET SPACE 0
这会导致所有选定的列在一条长线中一起运行,这是一种非常不寻常的报告布局方式。但如果这确实是您想要的,那么在计算线宽的正确值时,请忽略间隙空间


格式化您发布的代码后,我看到您正在输出到
.csv
。你为什么不说你首先要导出逗号分隔的值

有几种方法可以做到这一点。最简单的方法是用逗号连接查询的投影:

SELECT 
    '"'||COLUMN1 
    ||'","'|| COLUMN2 
    ||'","'|| COLUMN3 
    ||'","'|| COLUMN4 
    ||'","'|| COLUMN5 
    ||'","'|| COLUMN6 
    ||'","'|| COLUMN7
    ||'","'|| COLUMN8 
    ||'","'|| COLUMN9 ||'"'
FROM TABLE(ACTY_SUMM('09-NOV-2010','12-NOV-2010')) 
/ 
双引号是可选的字段终止符,它将处理任何包含逗号的字符串列


“我不想要单独的值。我 编辑我的帖子。请建议“

以下是一些测试数据:

SQL> select * from t23
  2  /

♀FIRSTNAME            LASTNAME              LOCATION    A   B   C   D   E   F
--------------------  --------------------  ----------  --  --  --  --  --  --
G   H   I
--  --  --
NAME1                 LNAME1                LOC1        A1  B1  C1  D1  E1  F1
G1  H1  I1

NAME2                 LNAME2                LOC1        A2  B2  C2  D2  E2  F2
G2  H2  I2

NAME3                 LNAME3                LOC2        A3  B3  C3  D3  E3  F3
G3  H3  I3


SQL> 
我可以使用SQL*Plus格式化命令生成您想要的基本布局

SQL> set linesize 100
SQL> break on location
SQL> compute count of location on location
SQL> compute count of location on report
SQL> r
  1* select * from t23
♀FIRSTNAME            LASTNAME              LOCATION    A   B   C   D   E   F   G   H   I
--------------------  --------------------  ----------  --  --  --  --  --  --  --  --  --
NAME1                 LNAME1                LOC1        A1  B1  C1  D1  E1  F1  G1  H1  I1
NAME2                 LNAME2                            A2  B2  C2  D2  E2  F2  G2  H2  I2
                                            ----------
                                                     2
NAME3                 LNAME3                LOC2        A3  B3  C3  D3  E3  F3  G3  H3  I3
                                            ----------
                                                     1

SQL> 

+1.此外,请记住退出后的CRLF。否则它将“挂起”(命令未发送)Hi是这一行仅像这样的“spool c:\temp`get_sums.lst”还是像spool c:\temp\get_sums.txt。CRLF的意思是请你解释一下。谢谢。在退出命令后加一个空行。否则,退出将不会被sqlplus使用。谢谢,但我将SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0158:未知列选项“作为”SP2-0734:未知命令开始“从表中…”忽略行的其余部分。第1行SELECT*错误:ORA-00936:缺少表达式删除SELECT和第1列之间以及“位置”和FROM+1之间的空行。此外,请记住退出后的CRLF。否则它将“挂起”(命令未发送)Hi是这一行仅像这样的“spool c:\temp`get_sums.lst”还是像spool c:\temp\get_sums.txt。CRLF的意思是请你解释一下。谢谢。在退出命令后加一个空行。否则退出将不会被sqlplus使用。谢谢,但我将SP2-0158:unknown COLUMN option“作为”SP2-0158:unknown COLUMN option“作为”SP2-0158:unknown COLUMN option“作为”A