【问题标题】:How to declare and display a variable in OracleOracle中如何声明和显示变量
【发布时间】:2012-02-02 05:07:26
【问题描述】:

我想在 Oracle 中声明并显示一个变量。

在 T-SQL 中我会做这样的事情

DECLARE @A VARCHAR(10) --Declares @A
SELECT @A = '12' --Assigns @A
SELECT @A --Displays @A

我如何在 Oracle 中做到这一点。

【问题讨论】:

    标签: oracle plsql oracle11g


    【解决方案1】:

    确保服务器输出开启,否则输出不会显示;

    sql> 设置服务器输出;

    declare
      n number(10):=1;
    begin
      while n<=10
     loop
       dbms_output.put_line(n);
       n:=n+1;
     end loop;
    end;
    /
    

    输出: 1 2 3 4 5 6 7 8 9 10

    【讨论】:

      【解决方案2】:

      如果您使用的是 pl/sql,那么下面的代码应该可以工作:

      将服务器输出设置为 -- 以检索和显示缓冲区

      DECLARE
      
          v_text VARCHAR2(10); -- declare
      BEGIN
      
          v_text := 'Hello';  --assign
          dbms_output.Put_line(v_text); --display
      END; 
      
      /
      

      -- 这必须用于执行 pl/sql 脚本

      【讨论】:

        【解决方案3】:

        您是否最近从 MySQL 切换到了 Oracle 中更简单的命令的逻辑等价物?因为对我来说就是这种情况,我也有同样的问题。这段代码会给你一个快速而肮脏的打印,我认为这是你正在寻找的:

        Variable n number
        begin
            :n := 1;
        end;
        print n
        

        中间部分是绑定变量的 PL/SQL 位。 print n 的输出是列形式的,恐怕不会只给出 n 的值。当我在 Toad 11 中运行它时,它会像这样返回

                n
        ---------
                1
        

        希望对你有帮助

        【讨论】:

          【解决方案4】:

          如果使用 sqlplus,你可以这样定义一个变量:

          define <varname>=<varvalue>
          

          您可以通过以下方式显示该值:

          define <varname>
          

          然后在查询中使用它,例如:

          select *
          from tab1
          where col1 = '&varname';
          

          【讨论】:

            【解决方案5】:

            如果你在谈论 PL/SQL,你应该把它放在一个匿名块中。

            DECLARE
                v_text VARCHAR2(10); -- declare
            BEGIN
                v_text := 'Hello';  --assign
                dbms_output.Put_line(v_text); --display
            END; 
            

            【讨论】:

            • 抱歉恢复旧帖。这部分没有解决最初的问题 - 至少对我来说 - 是dbms_output.put_line 在 T-SQL 中有效地执行了 PRINT 语句。 David 发布的内容和我正在寻找的是最后一个 SELECT 语句返回一个结果集 - 客户端应用程序可以使用该结果集。你知道如何做到这一点吗?谢谢。
            • dbms_output.Put_line(v_text); 相当于 T-SQL 中的 PRINT @v_text;...如果您记得将 SQL 开发人员中的 Dbms 输出窗口连接到与查询相同的 Oracle 连接!跨度>
            • 如果您希望将 Dbms 输出语句放在脚本输出面板中,这是一个快速简单的教程。 thatjeffsmith.com/archive/2012/05/…
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-12-16
            • 2021-10-10
            • 1970-01-01
            • 1970-01-01
            • 2022-11-28
            • 1970-01-01
            • 2013-09-19
            相关资源
            最近更新 更多