1

私はPL/SQLを初めて使用しますが、Oracleを含む他のSQLの経験が豊富です(スクリプトはそれほど多くありません)。数値(整数)変数を宣言し、それを行数に設定して、文でラップされた文字列で表示したいと思います。この演習の最終目標は、「1行あります」という文字列を出力する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のRapidSQLでは、

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

そしてORA-01008を取得します:すべての変数がバインドされているわけではありません

私は何が間違っているのですか?

4

1 に答える 1

2

SELECT INTOSQL * Plusでは、ほとんどの場合、を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
于 2012-10-22T21:45:51.037 に答える