Plsql 如何在SQL中创建lst文件?

Plsql 如何在SQL中创建lst文件?,plsql,Plsql,我想从sql脚本创建一个lst文件 这是我的密码: BEGIN DECLARE loc_bia_foracid GAM.foracid%TYPE; loc_fba_foracid GAM.foracid%TYPE; out_spool VARCHAR2(32000); BEGIN loc_bia_foracid:= '&loc_bia_foracid'; loc_fba_foracid:= '&loc_fba_foracid'; out_spool := out_spool |

我想从sql脚本创建一个lst文件

这是我的密码:

BEGIN
DECLARE
loc_bia_foracid GAM.foracid%TYPE;
loc_fba_foracid GAM.foracid%TYPE;
out_spool VARCHAR2(32000);
BEGIN
loc_bia_foracid:= '&loc_bia_foracid';
loc_fba_foracid:= '&loc_fba_foracid';

out_spool := out_spool || '|' || loc_bia_foracid;
out_spool := out_spool || '|' || loc_fba_foracid;


END;
如果我没有给出
out\u spool
的字符数,它会给我一个错误。 我希望我的lst文件超过32k个字符。
此外,我还需要知道如何在存储过程中定义它。

以下是上述内容作为存储过程的外观:

CREATE OR REPLACE FUNCTION make_lst(
  pis_bia_foracid IN GAM.foracid%TYPE,
  pis_fba_foracid IN GAM.foracid%TYPE)
RETURN VARCHAR2 AS
BEGIN
  RETURN '|' || pis_bia_foracid || '|' || pis_fba_foracid;
END make_lst;
(我还没有编译它,所以第一次可能无法使用)

对于大于32k的字符串,我的建议是使用CLOB(字符大对象)。CLOB(取决于您的Oracle版本)最多可容纳4GB的文本。我使用Oracle 9i,在9i中,您使用DBMS_LOB包初始化CLOB,打开它进行写入,写入,关闭它

关于风格的一些评论:

  • 请注意END标记上方法名称的使用。它有助于跟踪嵌套的起始块和结束块
  • 注意变量的命名约定:pis=参数,in,string,而ls=本地,string
  • 我建议添加日志记录和单元测试
  • 我建议将该方法添加到包中,因为我认为您需要一些相关的方法来实现最终的目标

    • 我想大概是这样吧

      declare
      loc_bia_foracid varchar2(32767);
      loc_fba_foracid varchar2(32767);
      out_spool clob;
      begin
         loc_bia_foracid := '&loc_bia_foracid';
         loc_fba_foracid := '&loc_fba_foracid';
      
         out_spool := out_spool || '|' || loc_bia_foracid;
         out_spool := out_spool || '|' || loc_fba_foracid;
      end;
      
      如果您在匿名块中使用它,您可能会因为&sign而清空\u spool 因此,您需要在诸如“&”| | loc|bia….等loc|变量之前连接它们