【问题标题】:How to use variables in a select statement in Oracle PL-SQL如何在 Oracle PL-SQL 的 select 语句中使用变量
【发布时间】:2017-03-29 09:36:01
【问题描述】:

我有一个可以在 toad 中运行的简单查询。

select * from my_table 
where my_id = 11111;

为什么这次我不能从 toad 运行相同的查询来声明一个变量并在 where 子句中使用它?

在 sql server 中我会:

declare @testID int
set @testID = 11111
select * from my_table 
    where my_id = @testID;

如何在 Oracle 11g 中完成同样的任务?

【问题讨论】:

  • 取决于.. 如果您这样做是为了进行测试,并且您想在运行时捕获该值,您可以只使用select * from my_table where my_id = &testID; 和符号表示在执行时需要用户输入的变量。在 Oracle 中要小心这一点,就好像你有一个像 Mike & Jon's Paint 和 body 这样的名字,它可能会要求你定义 Jon 变量! (这可以被禁用:见here
  • 对于类似的问题,前面已经给出了答案。看看here
  • @xQbert 我有多个“从 id = &id 的表中选择 *”查询。如果我要添加 &id ,它会在每次执行查询时提示我。我可以做一些事情来提示一次,并且一次又一次地使用相同的值。
  • @ASharma7 未经测试,但这个概念应该有效:使用 selct 语句并交叉连接到变量 SELECT A.*, Z.MyTestValue FROM tableName A cross join (Select &myTestValue myTestValue from dual) Z 但只有当您可以合并多个选择的结果并进行交叉连接时才有效工会之后。这是一个不同的问题:我建议问一个新问题。如果上述方法不起作用

标签: oracle


【解决方案1】:

在 Toad(或 SQL Developer)中,您可以这样做:

select * from my_table 
where my_id = :testID;

运行时,系统会提示您输入 testId 绑定变量的值。

【讨论】:

  • 我有多个“从 id = &id 的表中选择 *”查询。如果我要添加 &id ,它会在每次执行查询时提示我。我可以做一些事情来提示一次,并且一次又一次地使用相同的值。
  • @ASharma7 是的,你可以使用@@id
【解决方案2】:

PLSQL 不同于 SQL SERVER。它有自己的语法。看看你如何做到这一点:

DECLARE
   var    NUMBER := 1;
   var2   my_table%ROWTYPE;
BEGIN
   SELECT *
     INTO var2
     FROM my_table
    WHERE my_id = var;

  --To display result you need to add dbsm_output.put_line function.

  dbms_output.put_line(var2.<columnname>);

Exception
When others then
 Null;       
END;

注意:假设查询将只返回一行。

【讨论】:

  • 要查看,首先需要使用 dbms_output.put_line 函数显示它。
  • 我仍然没有看到结果。 (我的输出在 toad 中启用)声明 p_jobID number(6) := 111111; p_row JOBS%rowtype;从 my_table 开始 select * into p_row where id = p_jobID; Dbms_Output.put_line(:p_row);结束;
  • 您需要提及 p_row.columnname,例如 p_row.x 其中 x 是您的表 my_table 的列
  • 所以如果我的表有 30 列,那么我必须指定所有 30 列?
  • 谢谢。似乎我必须在 Oracle 和 sql server 中跳更多的圈子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多