Oracle 使用pl/sql匿名块更新表中的列

Oracle 使用pl/sql匿名块更新表中的列,oracle,plsql,Oracle,Plsql,下面的插入代码在SQL developer中运行良好,但在SQL plus中失败 create table abc(metric varchar2(10), line number(2), text varchar2(2000)); insert into abc (metric, line, text) values('abc', 1, q'#declare k_sid constant varchar2(100) := upper(sys_context('USERE

下面的插入代码在SQL developer中运行良好,但在SQL plus中失败

create table abc(metric varchar2(10), line number(2), text varchar2(2000));

insert into abc
(metric, line, text) 
values('abc', 1, q'#declare
    k_sid       constant varchar2(100) := upper(sys_context('USERENV', 'DB_NAME'));    
    -- Cusor-FOR-loop over all spy_configs for k_sme ...
    for r_stmt in (select k_sid as instance
                         ,k_sme as metric
                         ,key
                         ,value
                         ,'ERROR - spfile-parameter: '||key||' must be set to: '||value||' but is not - please check and change it !!!' as text
                   from bmw_system.bmw_spy_conf 
    raise_application_error (-20001, ' - '||sqlcode||' - '||sqlerrm,true);
end;#')
是否有任何通过sql plus参数的解决方案。任何指针都将不胜感激

问候,, Sandeep

试试:

set sqlt /
insert into abc
(metric, line, text) 
values('abc', 1, q'[declare
    k_sid       constant varchar2(100) := upper(sys_context('USERENV', 'DB_NAME'));    
    -- Cusor-FOR-loop over all spy_configs for k_sme ...
    for r_stmt in (select k_sid as instance
                         ,k_sme as metric
                         ,key
                         ,value
                         ,'ERROR - spfile-parameter: '||key||' must be set to: '||value||' but is not - please check and change it !!!' as text
                   from bmw_system.bmw_spy_conf 
    raise_application_error (-20001, ' - '||sqlcode||' - '||sqlerrm,true);
end;]')
/
set sqlt ;

设置SQLT[ERMINATOR]{;| c | ON | OFF}

设置用于结束PL/SQL块或SQL语句的脚本或数据项、执行脚本并将其加载到缓冲区的字符

它不能是字母数字字符或空白。OFF表示SQL*Plus不识别命令终止符;通过输入空行或斜杠(/)终止SQL命令。如果SQLBLANKLINES设置为ON,则必须使用BLOCKTERMINATOR终止SQL命令。ON将终止符重置为默认分号(;)


将命令保存到sql文件中,然后从sql Plus执行该文件:


“在sql plus中失败”呃?一个选项是将命令保存在文件中,并使用sql plus从文件中执行sql:我从未见过以前使用的插入值列表中显示的
q'#…#'
字符串格式。@BobJarvis它被称为“替代引用机制”,如果字符串包含单引号,则非常有用(特别是对于动态SQL)。您不必使用#作为分隔符,请参阅@FrankSchmitt-我每天都能学到一些新东西。谢谢!
SQL > @{path}{file}