2016-06-28 5 views
0

レコードを検索してテーブルで終了するには、次のsprocを記述しました。ハードコーディングされたエラーメッセージで見つけることができません。これ以外の場合は、ストアドプロシージャの回避方法

それは機能しますが、私はそれをよりスマートにしたいです。どんな提案もお願いします。


Create PROCEDURE [dbo].[dummy_test] 

@ID NVARCHAR(50) 

AS 
BEGIN 


Declare @TID Table (TID bigint not null)  
declare @TransId bigint  

-- Search for @TID 
insert into @TID 
Select TID from x..tables where EID = @ID 

Select @TransId = (select TID from @TID) 

If not exists 
(select top 1 1 from x..table7 where TID = @TransId) 
print 'B' 
else 
If not exists 
(select top 1 1 from x..table6 where TID= @TransId) 
print 'C' 
else 

If not exists 
(select top 1 1 from x..table0 where TID= @TransId) 
print 'D' 
else 

If not exists 
(select top 1 1 from x..table1 where TID = @TransId) 
print 'E' 
else 

If not exists 
(select top 1 1 from x..table2 where TID = @TransId) 
print 'F' 
else 

If not exists 
(select top 1 1 from x..table3 where TID = @TransId) 
print 'G' 

delete @TID 


END 
+0

あなたはよりスマートになることが何を意味するかを詳しく教えてください。 –

+0

私は、繰り返しのネストされたif文を避ける方法があるべきだと思います – Nugeswale

答えて

0

私が提案できる唯一の改善は全く不要であるなど何かをされ、あなたのコード内でテーブル変数を取り除くことです....

declare @TransId bigint  

Select @TransId = TID from x..tables where EID = @ID 
上記以外

コード@TransIdの存在を別のテーブルにチェックしているので、残りのコードを単純化することはできません。

関連する問題