代码之家  ›  专栏  ›  技术社区  ›  mak101

SQL开发人员脚本输出到datagrid

  •  1
  • mak101  · 技术社区  · 6 年前

    在Oracle SQL Developer中,我可以在“查询结果”网格中获得返回的简单查询结果,但如果我需要在脚本中使用变量,我需要使用“运行脚本”选项,结果会显示在“脚本输出”窗口中,并且我无法将其导出为csv格式。以下是我的示例代码:

        var CatCode char(5) ;
        exec :CatCode := 'ZK';
        SELECT * FROM Products WHERE CategoryCode = :CatCode;
    

    任何帮助都将不胜感激。 谢谢

    3 回复  |  直到 6 年前
        1
  •  2
  •   thatjeffsmith    6 年前

    只需添加一个 /*csv*/ 对于您的查询,当作为脚本(F5)执行时,该工具将自动以CSV格式返回输出。

    或者改用替换变量&Var vs:Var,使用F9运行,SQLDev将提示您输入值。

    VAR stcode CHAR(2);
    
    EXEC :stcode := 'NC';
    
    SELECT /*csv*/
        *
      FROM
        untappd
     WHERE
        venue_state   =:stcode;
    

    enter image description here

    或者直接转到网格以便可以使用可以使用网格导出功能。

    SELECT
        *
      FROM
        untappd
     WHERE
        venue_state   =:stcode2;
    

    使用Ctrl+Enter或F9执行

    在弹出对话框中提供输入参数,单击“确定”。

    沙扎姆。

    enter image description here

        2
  •  0
  •   Paras    6 年前

    给你,你可以运行这个来确保。它正在运行。

        set colsep ,     -- separate columns with a comma
        set pagesize 0   -- No header rows
        set trimspool on -- remove trailing blanks
        set headsep off  -- this may or may not be useful...depends on your headings.
        set linesize X   -- X should be the sum of the column widths
        set numw X       -- X should be the length you want for numbers (avoid scientific notation on IDs)
    
        spool C:\Users\**direcotory**\sql\Test1.csv; --this is file path to save data
        var CatCode char(5) ;
        exec :CatCode := 'ZK';
        SELECT * FROM Products WHERE CategoryCode = :CatCode;
        spool off;
    
        3
  •  0
  •   mak101    6 年前

    感谢@thatjeffsmith和Paras,spool选项给了我新的方向,并且奏效了。我稍微修改了你的代码,效果很好。

    var CatCode char(5) ;
    exec :CatCode := 'ZK';
    set feedback off;
    SET SQLFORMAT csv;
    spool "c:\temp\spoolTest.csv"
    SELECT * FROM Products WHERE CategoryCode = :CatCode;
    spool off;
    SET SQLFORMAT;
    set feedback on;