ORACLE TECHNOLOGY NETWORK
 
 
   

Oracle Technology Network (OTN) Japan - 掲示板 » データベース(R/O) » Oracle9iデータベースの部屋(読取専用)

スレッド: PL/SQLの呼び出し方について

このスレッドに返信する このスレッドに返信する スレッド一覧へ スレッド一覧へ

Permlink 返信数: 16 - ページ数: 2 [ 1 2 | 次へ ] - 最新投稿 : 2004/05/24 17:17 最新投稿者: teraokaryuji - スレッド表示形式:
teraokaryuji

投稿数: 31
登録日時: 04/05/12


PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 16:36
  このスレッドに返信します… 返信

どーもお世話になります。
SQLPlusよりPL/SQLのFunctionを実行させたいのですが
どのようにやればよいのかをご教授いただきたいのですが?

SQL>CALL FNC_MAKE_TEST_DATA;
としても
ORA-06576: ファンクション名またはプロシージャ名が無効です
となってしまいます。
お手数ですが宜しくお願いします。

ORACLEバージョン 9.0.2
OS RED HOT LINUX8.0


Tipo

投稿数: 3,713
登録日時: 00/03/02


RE:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 16:42   teraokaryuji さんへの返信です。 teraokaryuji さんへの返信です。
  このスレッドに返信します… 返信

>どーもお世話になります。
>SQLPlusよりPL/SQLのFunctionを実行させたいのですが
>どのようにやればよいのかをご教授いただきたいのですが?

BEGIN
FNC_MAKE_TEST_DATA;
END;

のようにしてみてください。

Tipo

投稿数: 3,713
登録日時: 00/03/02


RE[1]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 16:44   Tipo さんへの返信です。 Tipo さんへの返信です。
  このスレッドに返信します… 返信

又は

EXECUTE FNC_MAKE_TEST_DATA;

でも実行できますね。

もしもし

投稿数: 2,927
登録日時: 00/10/21


RE[1]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 16:45   Tipo さんへの返信です。 Tipo さんへの返信です。
  このスレッドに返信します… 返信

>BEGIN
> FNC_MAKE_TEST_DATA;
>END;
>
>のようにしてみてください。

この場合だと、最後に "/" が必要なのでは?

ちなみに、

SQL> EXEC FNC_MAKE_TEST_DATA;

でも可能です。

-----------------------------
もしもし@RMAN 友の会
with OTN Viewer 1.1.8

khiroxj8

投稿数: 176
登録日時: 01/11/16


RE[2]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 16:49   もしもし さんへの返信です。 もしもし さんへの返信です。
  このスレッドに返信します… 返信

ファンクションの戻り値が1件であれば、
以下のSQLでも可能だと思います。

select FNC_MAKE_TEST_DATA from dual
/


Tipo

投稿数: 3,713
登録日時: 00/03/02


RE[2]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 16:59   もしもし さんへの返信です。 もしもし さんへの返信です。
  このスレッドに返信します… 返信

>この場合だと、最後に "/" が必要なのでは?

その通りです!
SQL*PlusからPL/SQLブロックの実行には
最後に / が必要ですね。


もしもし

投稿数: 2,927
登録日時: 00/10/21


RE[3]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:00   khiroxj8 さんへの返信です。 khiroxj8 さんへの返信です。
  このスレッドに返信します… 返信

>ファンクションの戻り値が1件であれば、
>以下のSQLでも可能だと思います。
>
>select FNC_MAKE_TEST_DATA from dual
>/

そういえば function とありましたね。function ならむしろ
select .... で実行すべきですね。

exec .... で実行するのはプロシージャか...。

-----------------------------
もしもし@RMAN 友の会
with OTN Viewer 1.1.8

U210715869

投稿数: 2,689
登録日時: 00/05/15


RE:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:02   teraokaryuji さんへの返信です。 teraokaryuji さんへの返信です。
  このスレッドに返信します… 返信


>SQL>CALL FNC_MAKE_TEST_DATA;
>としても
>ORA-06576: ファンクション名またはプロシージャ名が無効です
>となってしまいます。
teraokaryuji さん、こんにちは。
ファンクションは復帰値を持ちますので、それを受け取るように呼び出す
必要があります。
復帰値を受け取る方法には、皆さんが提示されているように、
プロシージャを使う方法や通常のSQLファンクションのように
SELECT ファンクション FROM DUALなどといった方法があります。


teraokaryuji

投稿数: 31
登録日時: 04/05/12


RE[2]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:10   Tipo さんへの返信です。 Tipo さんへの返信です。
  このスレッドに返信します… 返信

>又は
>
>EXECUTE FNC_MAKE_TEST_DATA;
>
>でも実行できますね。

ありがとうございました。
解決致しました。


hoge

投稿数: 11,812
登録日時: 99/03/15


RE:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:10   teraokaryuji さんへの返信です。 teraokaryuji さんへの返信です。
  このスレッドに返信します… 返信

>SQL>CALL FNC_MAKE_TEST_DATA;
>としても
>ORA-06576: ファンクション名またはプロシージャ名が無効です
>となってしまいます。

無名PL/SQL使用すれば引数の設定や戻り値の表示も簡単です。



teraokaryuji

投稿数: 31
登録日時: 04/05/12


RE[2]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:11   もしもし さんへの返信です。 もしもし さんへの返信です。
  このスレッドに返信します… 返信

>>BEGIN
>> FNC_MAKE_TEST_DATA;
>>END;
>>
>>のようにしてみてください。
>
>この場合だと、最後に "/" が必要なのでは?
>
>ちなみに、
>
> SQL> EXEC FNC_MAKE_TEST_DATA;
>
>でも可能です。
>
>-----------------------------
>もしもし@RMAN 友の会
> with OTN Viewer 1.1.8

ありがとうございました。
解決致しました。



kitkat

投稿数: 179
登録日時: 03/08/12


RE[4]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:13   もしもし さんへの返信です。 もしもし さんへの返信です。
  このスレッドに返信します… 返信

>exec .... で実行するのはプロシージャか...。

関数の戻り値の型が記載されていないので。
とりあえず、戻り値が数値だと仮定して、

var ret number
exec :ret := FNC_MAKE_TEST_DATA;
print

で、実行できます。


teraokaryuji

投稿数: 31
登録日時: 04/05/12


RE[1]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:13   hoge さんへの返信です。 hoge さんへの返信です。
  このスレッドに返信します… 返信

>>SQL>CALL FNC_MAKE_TEST_DATA;
>>としても
>>ORA-06576: ファンクション名またはプロシージャ名が無効です
>>となってしまいます。
>
>無名PL/SQL使用すれば引数の設定や戻り値の表示も簡単です。

ありがとうございました。
緊急に答えなければならなかったもので
解決致しました。


teraokaryuji

投稿数: 31
登録日時: 04/05/12


RE[1]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:14   U210715869 さんへの返信です。 U210715869 さんへの返信です。
  このスレッドに返信します… 返信

>
>>SQL>CALL FNC_MAKE_TEST_DATA;
>>としても
>>ORA-06576: ファンクション名またはプロシージャ名が無効です
>>となってしまいます。
>teraokaryuji さん、こんにちは。
>ファンクションは復帰値を持ちますので、それを受け取るように呼び出す
>必要があります。
>復帰値を受け取る方法には、皆さんが提示されているように、
>プロシージャを使う方法や通常のSQLファンクションのように
>SELECT ファンクション FROM DUALなどといった方法があります。

ありがとうございました。
解決致しました。

かず

投稿数: 1,457
登録日時: 01/03/14


RE[4]:PL/SQLの呼び出し方について
投稿時刻: 2004/05/24 17:14   もしもし さんへの返信です。 もしもし さんへの返信です。
  このスレッドに返信します… 返信

>そういえば function とありましたね。function ならむしろ
>select .... で実行すべきですね。
>
>exec .... で実行するのはプロシージャか...。

あえて exec で実行するなら

SQL> var ret varchar2(100) ← 実際はファンクションの戻り値の型
SQL> exec :ret := FNC_MAKE_TEST_DATA;

PL/SQLプロシージャが正常に完了しました。

SQL> print ret

として、ret の値を確認。







ウェブサイトのご使用条件 | 個人情報保護基本方針/情報保護基本方針