我有一个在SQL Server中完美运行的简单SQL语句:
DECLARE @ID VARCHAR(10)
SET @ID = '12345'
SELECT *
FROM theTable
WHERE ID = @ID
有人可以告诉我如何在Oracle中做这个非常基本的事情吗?
答案 0 :(得分:2)
您可以使用SQL * Plus接口(命令行中的sqlplus)执行类似的操作:
variable asdf number;
exec :asdf := 10;
select :asdf from dual;
此致 ķ
答案 1 :(得分:1)
在SQL * Plus中,它几乎相同:
SQL> create table thetable (id) as select '01234' from dual union all select '12345' from dual
2 /
Table created.
SQL> var id varchar2(10)
SQL> exec :id := '12345'
PL/SQL procedure successfully completed.
SQL> select *
2 from theTable
3 where id = :id
4 /
ID
-----
12345
1 row selected.
或在PL / SQL中:
SQL> declare
2 l_id varchar2(10) := '12345';
3 r thetable%rowtype;
4 begin
5 select *
6 into r
7 from thetable
8 where id = l_id
9 ;
10 dbms_output.put_line(r.id);
11 end;
12 /
12345
PL/SQL procedure successfully completed.
此致 罗布。
答案 2 :(得分:1)
如果您的目标是将变量设置在脚本的顶部,那么这可能是您的解决方案吗?
with IDS as (
select 1234 from dual
union all
select 1235 from dual
)
select * from TABLE where TABLE.ID in (select * from IDS)
答案 3 :(得分:0)
不幸的是,没有简单的方法。
你必须在一个块中声明它(我认为它可能必须是一个存储过程,或者至少在一个块中)。但是,这只是问题的一部分。一旦它在一个块中,结果就不会长时间“溢出”到控制台窗口。因此,您必须使用游标,将行信息复制到数组中,然后逐步执行数组,使用DMBS_OUTPUT打印值。
很容易让你回到MSSQL。
(Mark Harrison注意)这个答案不正确...请参阅代码的oracle版本的其他答案。