sql - 如何在sqlplus中定义一个名为“1”的绑定变量
问题描述
我有一个使用绑定变量编写的应用程序,称为:1、2、3.. 我想练习存储在 sql_area 中的执行计划,并使用相同的文本在 sqlplus 中执行查询
举例:
select * from dual where dummy=:1;
如何在 sqlplus 中将“1”定义为绑定变量?
var 1 varchar2(1); doesn't work.
它不将“1”识别为变量名。
解决方案
是的,这很烦人,但是您可以将查询包装到匿名 PL/SQL 块(脚本)中,如下所示:
SQL> exec execute immediate 'select count(*) cnt from dual where :1=dummy' using 'x';
PL/SQL procedure successfully completed.
SQL> select sql_id from v$sqlarea a where sql_text like 'select count(*) cnt from dual%';
SQL_ID
-------------
8y7sav2n21055
1 row selected.
SQL> ed tests/run_sql.sql
SQL> !cat tests/run_sql.sql
declare
vsql clob;
begin
select sql_fulltext into vsql from v$sqlarea a where a.sql_id='&1';
execute immediate vsql using &2;
end;
/
SQL> @tests/run_sql.sql 8y7sav2n21055 123
PL/SQL procedure successfully completed.
顺便说一句,SqlCl有另一个更简单的解决方法:使用alias
它:
SQL> alias sel1=select :1 from dual;
SQL> sel1 123
:1
----------------------------------------------------
123
推荐阅读
- sql-server - 对象“服务器”、数据库“主”上的外部访问组件权限被拒绝
- r - 创建一个矩阵 m 并设置为位置 mij = (i+j)*10
- javascript - 使用 javascript 和 html 在 webview 应用程序中打开相机
- karate - 在空手道加特林负载测试中共享连接
- javascript - 从网络摄像头 Ext JS 捕获图片
- dask - 如何在本地集群中动态添加工作人员
- javascript - 我想用 TypeScript 屏蔽反应项目的源代码
- r - 如何在 R 中最接近的 3 个值中进行选择?
- java - SearchView 过滤器按预期工作,但检索片段中 RecyclerView 上的旧项目位置
- r - Rmarkdown 文件中的 DiagrammeR/mermaid 流程图,输出格式为 PDF/LaTex