2011-11-09 7 views
1

をコンパイルしていないために発生していますアプリを表示しない。select文は、この単純なコードは、spはエラーのすべての種類を指定してコンパイルしないように引き起こしている

if (select count(*) from oen.dbd_c_modules) > 0 begin 

insert into [OEN].[DBD_C_MODULES]([MODULE_ID], [DESCRIPTION], ACTIVE) 
VALUES(11,'Medications',1) 


end 

go 

エラー: メッセージ102、レベル15、状態1、プロシージャDBD_GET_MEDICINE、ライン24 '終了' の近くに不適切な構文。 メッセージ137、レベル15、状態2、行15 スカラー変数 "@DATEFROM"を宣言する必要があります。 メッセージ137、レベル15、状態2、行16 スカラー変数 "@DATEFROM"を宣言する必要があります。 メッセージ137、レベル15、状態2、行39 スカラー変数 "@FACILITYKEY"を宣言する必要があります。 メッセージ156、レベル15、状態1、行52 キーワード 'AND'の近くの構文が正しくありません。 メッセージ156、レベル15、状態1、行56 キーワード 'AND'の近くの構文が正しくありません。

コードは:ここにある:私は、我々はすべてのコードを参照する必要があると思うhttp://www.mediafire.com/?16qr8xaszq025b6

+0

何味を使用していますか? – Borodin

+0

SPのすべてのコードを表示できますか? –

+0

不平を言う変数を宣言しましたか? – Daryl

答えて

1

あなたは必要としない場合は(...):

INSERT INTO [OEN].[DBD_C_MODULES]([MODULE_ID], [DESCRIPTION], ACTIVE) 
VALUES(11,'Medications',1) 
WHERE (select count(*) from oen.dbd_c_modules) > 0 
    ; 

[個人的に、私は非相関サブクエリ時に難色を示すが、それはまた別の問題である]

EDIT: 代替製剤:

あなたは、SQLの
INSERT INTO [OEN].[DBD_C_MODULES]([MODULE_ID], [DESCRIPTION], ACTIVE) 
VALUES(11,'Medications',1) 
WHERE NOT EXISTS (select * from oen.dbd_c_modules) 
    ; 
+0

私はメッセージ156、レベル15のエラーを取得し、状態1、プロシージャDBD_GET_MEDICINE、ライン16 キーワード「WHERE」の近くの構文が正しくありません。 メッセージ102、レベル15、状態1、プロシージャDBD_GET_MEDICINE、行16 '>'の近くの構文が正しくありません。 – Booksman

+0

ここにコードがありますhttp://www.mediafire.com/?9su8chxu91d7jyo – Booksman

1

- スニペット内ではないとGOキーワードは、ストアドプロシージャのTSQL構文の一部ではありません、エラーリストの変数を、それはSSMSのバッチマーカーの終わりです。 (GOキーワードが実際に存在する場合、問題の原因となる可能性があります)

投稿したコード全体を見ると、ストアドプロシージャにGOキーワードが設定されています。これは有効なTSQL構文ではなく、サーバーに送信しているので、ストアドプロシージャを半分に削減します。このエラーは、GOキーワードについて不平を言ってから、実行している2番目のバッチ(プロシージャの後半)を実行しようとすると、変数が宣言したものがわからないので、エラーがスローされます良いもののためにそれらの上に。

ちょうどあなたのコード内で「GO」を削除して、もう一度それをコンパイルしてみてください。

関連する問題