1

ストアドプロシージャを呼び出すときに必要なのはなぜEXECですか?EXECUTEOracleとSQLServerの両方に、EXEC必要な場合と不要または不要な場合があります。これまでにそれを要求することのポイントは何ですか?

4

3 に答える 3

4

これにより、構文がより明確で明確になります。T-SQLではステートメントの区切り文字(セミコロン)は必須ではないため、ステートメントの開始位置をより明確に見つけることができます。

補足として、あいまいさの問題があるため、各ステートメントの後にセミコロンを厳密に使用することをお勧めします(特にWITH、DMLステートメントの前に一般的なテーブル式の定義を開始するかDMLステートメントの最後に使用できるキーワードを使用するときに頻繁に発生します)ヒントを定義するため。セミコロンがないと、パーサーは実際にどれを選択するかを知ることができません)。

于 2012-12-28T20:50:08.297 に答える
3

それは間違いなくパーサーの問題/課題です。ストアドプロシージャの呼び出しがテキストの本文のどこにでもある場合は、それをすべて理解できる普遍的な「もの」を書き込もうとして自殺することになります。代わりに、デザイナーはその言語のBNFを公開し、ユーザーであるあなたはそれを話す方法を理解する責任があります。

または、SQL Serverの世界では、常にEXEC / EXECUTEを使用し、必要なときの細かい点について心配する必要はありません。@alexが指摘しているように、これはOracleには当てはまりません。

于 2012-12-28T20:48:45.420 に答える
1

Oracleでは、EXECUTE(またはEXEC)は、匿名PL/SQLブロックのショートカットとしてSQL*Plusで使用されます。EXECUTEはPL/SQLでは機能しません。次のいずれかを実行できます。

SQL> execute my_proc;

または、完全に指定された匿名ブロックとして:

SQL> DECLARE
BEGIN
  my_proc;
END;
/

これは完全にOracleのクライアント構文です。

于 2012-12-28T20:57:34.457 に答える