【问题标题】:Convert sql statement with function into Oracle stored procedure将带函数的sql语句转换为Oracle存储过程
【发布时间】:2012-08-10 19:22:29
【问题描述】:

科尔斯,你好。谁能告诉我如何将下一个“非常规”选择转换为存储过程。

SELECT * FROM TABLE
                (parallel_dump –- this is a pipelined function which helps to create a huge file using UTL
                    (
                    CURSOR(
                    SELECT /*+ PARALLEL(s,4)*/
                    to_clob(B1)||to_clob(B2)||to_clob(B3)||to_clob(B4) AS cvs  
FROM 
(select 
(A1||…||A200) as B1,
(A201||…||A400) as B2, 
(A401||…||A600) as B3,
(A601||…||A839) as B4 from 
(
Select blabla from Dual

Union all 


select * from anytable


union all

select blablaba from DUAL  

union all

select blabla from DUAL  

)

) s),
                    'filename',
                    'DIRECTORY_NAME'
                    )
                ) nt;

我不明白在哪里以及如何使用“into”。我尝试了一些变体,但无法编译 proc。

【问题讨论】:

  • 你想对选中的数据做什么?除了选择之外,该过程会做什么 - 您是否只是想制作一个将调用流水线函数并丢弃结果的包装器?或者使用所选数据执行UTL_FILE 操作?
  • 选择的数据被上传到文件中。程序将数据发送到函数,该函数将其上传到 txt 文件中。

标签: sql oracle function stored-procedures


【解决方案1】:
create or replace procedure my_proc 
IS
begin
for rec in (
SELECT                     *
FROM TABLE (parallel_dump –- this IS a pipelined FUNCTION which helps TO CREATE a huge file USING UTL ( CURSOR
  (SELECT
    /*+ PARALLEL(s,4)*/
    to_clob(B1)
    ||to_clob(B2)
    ||to_clob(B3)
    ||to_clob(B4) AS cvs
  FROM
    (SELECT (A1
      ||…
      ||A200) AS B1,
      (A201
      ||…
      ||A400) AS B2,
      (A401
      ||…
      ||A600) AS B3,
      (A601
      ||…
      ||A839) AS B4
    FROM
      ( SELECT blabla FROM Dual
      UNION ALL
      SELECT * FROM anytable
      UNION ALL
      SELECT blablaba FROM DUAL
      UNION ALL
      SELECT blabla FROM DUAL
      )
    ) s
  ), 'filename', 'DIRECTORY_NAME' ) ) nt
  )
  LOOP
   -- do whatever you want with the data for example:
   dbms_output.put_line('value of col1 ' || rec.col1);
  END LOOP;
END;
/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 2015-08-28
    • 2021-08-17
    • 1970-01-01
    • 2018-05-06
    • 2015-10-24
    • 2020-10-12
    • 2015-07-05
    相关资源
    最近更新 更多