Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Oracle PL-SQL(或SQL plus)的某些select语句中使用变量_Oracle_Select_Plsql_Sqlplus - Fatal编程技术网

如何在Oracle PL-SQL(或SQL plus)的某些select语句中使用变量

如何在Oracle PL-SQL(或SQL plus)的某些select语句中使用变量,oracle,select,plsql,sqlplus,Oracle,Select,Plsql,Sqlplus,我有几个select语句,它们都需要使用相同的变量。那么我可以先定义一个变量,然后在下面的语句中直接使用它,如下所示: declare variable; -- a to_date function select statement 1; select statement 2; select statement 3; ... 所以当条件改变时,我可以修改变量。我如何在oracle中使用pl sql(或sql plus)实现它?您需要简单的sql*plus变量 variable my_date

我有几个select语句,它们都需要使用相同的变量。那么我可以先定义一个变量,然后在下面的语句中直接使用它,如下所示:

declare variable;  -- a to_date function
select statement 1;
select statement 2;
select statement 3;
...

所以当条件改变时,我可以修改变量。我如何在oracle中使用pl sql(或sql plus)实现它?

您需要简单的sql*plus变量

variable my_date varchar2(30)

exec :my_date := '01-oct-2019';

select * from t where date_col = to_date(:my_date,'dd-mon-yyyy');

-- other select statements
您也可以使用替换变量来实现这一点

select * from t1 where date_col = to_date(&&my_date,'dd-mon-yyyy');

select * from t2 where date_col = to_date(&&my_date,'dd-mon-yyyy');

-- other select statements using &&my_date
在这里,oracle将提示输入一次my_date(因为我们使用了两个
&
),其值将在该会话的所有select语句中使用


干杯

你怎样才能做到什么?你所描述的是正确的过程。您是否在询问如何在运行查询之前为变量赋值?你展示了如何声明变量,而不是如何给它赋值——这就是你要问的吗?对不起,我没有很清楚地表达这个问题。我的问题是先声明变量,然后分配变量,最后使用。是的,在sql plus中是可以的。在pl sql中执行时,它会提示“ORA-00900”和“ORA-01008”错误。pl-sql中有一个例子吗?请尝试第二个例子,即使用two&您可以将整个代码发布到错误的地方吗。您是否也在某个进程/函数中使用它?我完全遵循示例二,但每个sql语句都会提示相同的错误“ORA-01008”。请添加实际代码、您正在执行的工具以及问题中的实际错误消息