15

SQLクエリで「goto」ステートメントを使用するのは良い習慣ですか?

4

5 に答える 5

11

SQLに依存します-一部の方言は、GOTO以外のフロー制御に役立つメカニズムを提供していません。

GOTOは一般的に悪い形です。

于 2010-06-15T14:18:43.493 に答える
9

本番コードではありませんが、テスト用には問題ありません。

たとえば、「共通ビット」がテスト対象のプロシージャとデバッグ ステートメントの呼び出しであるストアド プロシージャの回帰テストを提供したいとします。

declare @test int;
set @test = 1;
goto tests

common:
print 'common bit'

tests:
if @test = 1 print '1';
if @test = 2 print '2';
if @test = 3 print '3';

set @test = @test + 1;
if @test <= 3 goto common
print 'finished ' + cast(@test as varchar(5))
go  -- goto can not be used past go!

t-sql初心者であるため、プロシージャまたは関数をスコープ内で宣言して「共通ビット」を実行することを望んでいましたが、これは多くのグーグル検索の後に思いついた最高のものでした。再利用したいコードごとにストアド プロシージャをセットアップする必要があるのはなぜですか。特に非生産作業の場合。

于 2011-11-15T05:36:07.853 に答える
3

いいえ。

他の言語と同様に、ほとんどの場合、後藤よりも優れたオプションがあります。

使用しているSQLパッケージと達成しようとしていることを教えていただければ、どれが適切かを正確に把握できる可能性があります。

于 2010-06-15T14:19:09.233 に答える
0

私の推測ではありません。現代語でのgotoステートメントに関する私の一般的なルールは、それらを使用している場合、デザインに何か問題があるということです。

于 2010-06-15T14:19:08.223 に答える