如何使用Oracle SQL中的声明参数过滤sql查询

时间:2015-01-14 09:19:21

标签: sql oracle plsql oracle11g

我有一个Oracle SQL脚本,想将输入参数传递给脚本执行。 我怎么做到这一点?

说我有日期参数testdate。这就是我们在sql server中的做法

declare @testdate as date

select * from test where testdate=@testdate

基本上我在一个需要执行的块中有一组sql语句。

1 个答案:

答案 0 :(得分:1)

您可以将其作为参数传递给SQL脚本,并在SQL * Plus中调用它。

例如,

我的脚本 emp.sql 看起来像 -

select ename from emp where empno=&1

现在,我将在 SQL * Plus 中调用它,将empno作为参数传递。

SQL> @D:\emp.sql 7369
old   1: select ename from emp where empno=&1
new   1: select ename from emp where empno=7369

ENAME
----------
SMITH

SQL>

同样,对于日期参数 -

SQL> @D:\emp.sql sysdate
old   1: select ename from emp where hiredate<=&1
new   1: select ename from emp where hiredate<=sysdate

ENAME
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS

ENAME
----------
JAMES
FORD
MILLER

14 rows selected.

SQL>

对于字符串类型,您需要使用单引号。例如 -

SQL> @D:\emp.sql SCOTT
old   1: select empno from emp where ename='&1'
new   1: select empno from emp where ename='SCOTT'

     EMPNO
----------
      7788

SQL>