Plsql 如何在SQL中创建lst文件?
我想从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 |
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|变量之前连接它们