0

良い一日、

次のようなPL-SQLクエリがあります。クエリを実行して、結果を変数に格納しようとしています。これまでのところ、私は機能するこのクエリを持っています:

    SELECT DECODE(COUNT(*), 0, 'N', 'Y') REC_EXISTS
    FROM
         (SELECT 
                COUNT(*) AS TOTAL_COUNT
           FROM DEV.BASEOBJECT INNER JOIN
                DEV.ANIMAL ON DEV.BASEOBJECT.ID = DEV.ANIMAL.BASEOBJECT_ID
       GROUP BY DEV.BASEOBJECT.ID, 
                DEV.BASEOBJECT.FIRST_NAME, 
                DEV.BASEOBJECT.LAST_NAME, 
                DEV.BASEOBJECT.CITY,
                DEV.BASEOBJECT.STATE,
                DEV.BASEOBJECT.ZIP,
                DEV.ANIMAL.ID,
                DEV.ANIMAL.NAME,
                DEV.ANIMAL.BREED, 
                DEV.ANIMAL.DATE_OF_BIRTH, 
                DEV.ANIMAL.GENDER,
                DEV.ANIMAL.SPECIES
         HAVING (COUNT(*) > 1));

しかし、このクエリを使用して結果を変数に保存しようとすると、次のようになります。

DECLARE
    v_name  VARCHAR2(2);
BEGIN
    SELECT DECODE(COUNT(*), 0, 'N', 'Y') REC_EXISTS
        INTO v_name
    FROM
         (SELECT 
                COUNT(*) AS TOTAL_COUNT
           FROM DEV.BASEOBJECT INNER JOIN
                DEV.ANIMAL ON DEV.BASEOBJECT.ID = DEV.ANIMAL.BASEOBJECT_ID
       GROUP BY DEV.BASEOBJECT.ID, 
                DEV.BASEOBJECT.FIRST_NAME, 
                DEV.BASEOBJECT.LAST_NAME, 
                DEV.BASEOBJECT.CITY,
                DEV.BASEOBJECT.STATE,
                DEV.BASEOBJECT.ZIP,
                DEV.ANIMAL.ID,
                DEV.ANIMAL.NAME,
                DEV.ANIMAL.BREED, 
                DEV.ANIMAL.DATE_OF_BIRTH, 
                DEV.ANIMAL.GENDER,
                DEV.ANIMAL.SPECIES
         HAVING (COUNT(*) > 1));
END

エラーが発生します:

ERROR
ORA-06550: line 1, column 8:
PLS-00103: Encountered the symbol "" when expecting one of the following:

   begin function package pragma procedure subtype type use
   <an identifier> <a double-quoted delimited-identifier> form
   current cursor
The symbol "" was ignored.    

最終的に、これはストアドプロシージャになりますが、私が持っているものがこれまでに機能していることを確認したかったので、まだその部分を準備していません。

TIA、

コソン

4

1 に答える 1

0

これをどのように実行していますか?どのツールを使用していますか?問題は、ツール/IDEがこれを関数/プロシージャとしてコンパイルしようとしていることだと思います。このコードは問題ないように見え、SQL * Plusでスクリプトとして実行した場合、おそらく問題なく実行されます。これをスクリプトとして実行する場合はdbmbs_output.put_line(v_name)、クエリの後にを追加して結果を確認する必要があります。

于 2012-10-09T19:11:00.830 に答える