PLSQL 中的查询参数定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PLSQL 中的查询参数定义相关的知识,希望对你有一定的参考价值。

问题是这样的
有多条语句
select * from 表1 where 条件1 between 值1 and 值2;
select * from 表2 where 条件1 between 值1 and 值2;
。。。

现在希望把值1和值2做一个统一的定义
这样在文件头进行设置,就可以不对全部文件的参数进行修改。
相当于

定义 参数1=值1
定义 参数2=值2
select * from 表1 where 条件1 between 参数1 and 参数2;
select * from 表2 where 条件1 between 参数1 and 参数2;
恩 是这个意思
我的语句是
declare
a varchar2(50):='20100422';
b varchar2(50):='20100424';
begin
create table test as select * from oct_t_ehr where ehr_date between a and b;
end;
但是报错。。。

参考技术A 在oracle plsql程序块中,只能使用DML和常规的事务控制语句(TCL),
你这个是在块中使用了DDL,这个是不允许的,因为oracle的plsql是提前bind的(预编译),而ddl所影响的对象往往是不存在的,这个是预编译所不允许的,所以如果想在块中使用ddl,则必须使用动态sql(所起作用就是让编译推迟到runtime)

原理讲的可能有点模糊,呵呵。感兴趣的可以系统的看下相关资料,这里把你的程序简单改动下就可以通过编译了:

declare
a varchar2(50):='20100422';
b varchar2(50):='20100424';
begin
execute immediate 'create table test as select * from oct_t_ehr where ehr_date between a and b';
end;本回答被提问者采纳
参考技术B declare
a number :=0;
b varchar2(20):= 'XX';
begin
select * from 表1 where 条件1 between a and b;
end;

是这个意思吗

以上是关于PLSQL 中的查询参数定义的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PLSQL 过程中将字符串值作为参数传递

PLSQL 过程中的查询必须返回 1 行,但返回更多行

我们可以使用表类型参数作为 PLSQL 中的默认空参数吗?

如何探索 PLSQL 块中的 out 游标参数?

PL SQL 中多个参数的逗号分隔查询

将数组作为参数传递给 plsql 过程