1

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

在 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: not all variables bound

我究竟做错了什么?

4

1 回答 1

2

在 SQL*Plus 中,您很可能只需将 放在SELECT INTOPL/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
于 2012-10-22T21:45:51.037 回答