8

関数内でストアド プロシージャを実行できないのはなぜですか?

4

8 に答える 8

0

これは、関数の実行によってデータが変更されることは想定されておらず、ストアド プロシージャの実行を許可すると、これが可能になるためだと思われます...

于 2010-05-24T11:07:00.297 に答える
0

関数内から呼び出すには、ストアド プロシージャを関数に変更する必要があります。

または、1 つの方法はxp_cmdshell、バッチ ファイルに実行プロシージャ ステートメントが含まれているバッチ ファイルを呼び出すために使用することです。関数では、拡張プロシージャを呼び出すことができます。

例えば。

Create Function...

EXEC master.sys.xp_cmdshell 'C:\test.bat'

RETURN...

これが良い習慣だと言っているわけではありませんが、可能性があると言っているだけです。

于 2010-05-24T11:16:00.150 に答える
0

関数内でプロシージャを呼び出すことはできますが、select ステートメントを介してその関数を呼び出すことはできません。関数は、別の呼び出しプログラムを介して呼び出すと正常に動作します。dml 操作の場合も同様です。関数には dml 操作を含めることができますが、select ステートメントを介して呼び出すことはできません。 .一方、別のプログラムを介して関数を呼び出すと、dml が実行されます

于 2022-01-14T20:24:00.767 に答える
-1

技術的には、関数からストアド プロシージャを呼び出すことは可能です。ただし、ストアド プロシージャと関数の目的を思い出してください。

関数の目的:関数は値を計算するために使用されるため、値を返す必要があります。関数は、データを変更しない限り、select ステートメントから呼び出すことができます。(一時テーブルではなく、永続的なテーブル データ)

ストアド プロシージャの目的: ストアドプロシージャはビジネス ロジックを実行するために使用されるため、値を返す場合と返さない場合があります。

于 2010-05-24T11:27:12.850 に答える