gpt4 book ai didi

sql - 如何在 Oracle 动态 SQL 中转义 ":"并且还有绑定(bind)变量?

转载 作者:行者123 更新时间:2023-12-04 11:30:20 25 4
gpt4 key购买 nike

我正在尝试使以下动态 SQL,但是 :角色搞砸了——

alter session set events 'sql_trace [sql: asasasaass]';

例子:
declare
l_trc_cmd varchar2(500);
l_sql_id varchar2(500) := 'asasasaass';
begin
l_trc_cmd := q'# alter session set events 'sql_trace [sql: :L_SQL_ID]' #';
execute immediate l_trc_cmd using l_sql_id;
end;
/

以上失败:
ERROR at line 1:
ORA-01006: bind variable does not exist

一个 :根据 SQL 的语法需要另一个 :用于绑定(bind)变量。

除了连接绑定(bind)值之外,关于如何解决这个问题的任何想法?

--
编辑于 4 月 4 日下午 5 点 CST 添加以下内容:

Alter session 不是 DDL 命令。下面就是证明。
sqlplus+> select * from t2;

A
----------
1

1 row selected.

sqlplus+> insert into t2 values(2);

1 row created.

sqlplus+> alter session set tracefile_identifier ="umappsperf1" statistics_level=all;

Session altered.

sqlplus+> alter session set events 'sql_trace wait=true';

Session altered.

sqlplus+> select * from t2;

A
----------
2
1

2 rows selected.

sqlplus+> rollback;

Rollback complete.

sqlplus+> select * from t2;

A
----------
1

1 row selected.

最佳答案

对于这个语句,我只是忘记使用绑定(bind)变量,例如:

declare
l_trc_cmd varchar2(500);
l_sql_id varchar2(500) := 'asasasaass';
begin
l_trc_cmd := REPLACE(
q'# alter session set events 'sql_trace [sql: %SQLID%]' #'
,'%SQLID%',l_sql_id);
execute immediate l_trc_cmd;
end;
/

关于sql - 如何在 Oracle 动态 SQL 中转义 ":"并且还有绑定(bind)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5531584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com