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;
但是报错。。。
你这个是在块中使用了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 中的查询参数定义的主要内容,如果未能解决你的问题,请参考以下文章