如何使用 Oracle SQL 中声明的参数过滤 sql 查询
How to filter your sql query using declared parameters in Oracle SQL
我有一个 Oracle SQL 脚本,想将输入参数传递给脚本以供执行。
我将如何实现这一目标?
假设我有日期参数测试日期。这就是我们在 sql server
中的做法
declare @testdate as date
select * from test where testdate=@testdate
基本上我在一个块中有一组 sql 语句需要执行。
您可以将它作为参数传递给 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>
我有一个 Oracle SQL 脚本,想将输入参数传递给脚本以供执行。 我将如何实现这一目标?
假设我有日期参数测试日期。这就是我们在 sql server
中的做法declare @testdate as date
select * from test where testdate=@testdate
基本上我在一个块中有一组 sql 语句需要执行。
您可以将它作为参数传递给 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>