在PL / SQL中声明,设置和显示var

时间:2012-10-22 21:38:43

标签: oracle plsql oracle11g sqlplus

我是PL / SQL的新手,但有很多其他的SQL经验,包括Oracle(只是没有那么多脚本)。我想声明一个数字(整数)var,将其设置为行计数,并将其显示在句子包装的字符串中。本练习的最终目标是使用SQL * Plus脚本打印字符串“有1行”。

在Unix上的SQL * Plus中,我这样做:

SQL> variable v_dCnt number;
SQL> select count(*) into :v_dCnt from dual;

  COUNT(*)
----------
         1

SQL> select 'There are ' || :v_dCnt || ' rows' as MESSAGE from dual;

MESSAGE 
-------------------------------------------------------
There are  rows

请注意它如何显示v_dCnt的空白而不是值1

在Win7上的Rapid SQL中,我做

variable v_dCnt number;
select count(*) into :v_dCnt from dual;
select 'There are ' || :v_dCnt || ' rows' from dual;

并获取ORA-01008:并非所有变量都绑定

我做错了什么?

1 个答案:

答案 0 :(得分:2)

在SQL * Plus中,您很可能只需要将SELECT INTO放在PL / SQL块中

SQL>  variable v_dCnt number;
SQL> begin
  2    select count(*)
  3      into :v_dCnt
  4      from dual;
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL> ed
Wrote file afiedt.buf

  1* select 'There are ' || :v_dCnt || ' rows' from dual
SQL> /

'THEREARE'||:V_DCNT||'ROWS'
-------------------------------------------------------
There are 1 rows