0

ストアドプロシージャで、レコードを一時テーブルに挿入しようとしています

ストアドプロシージャで、レコードを一時テーブルに挿入しようとしています

--Temporary table
create table #CR_TMP
    (

         ct_co_id               int        NULL 
         , ct_nbr               int        NULL 
         , ctrct_srvc_type         char(4)    NULL 
     , start_date          datetime   NULL 
     , end_date            datetime   NULL 
    )

  print 'Before insert' 

Insert into #CR_TMP
 select distinct col1,col2,......
from tableName
where conditions

print 'After insert'
select '#CR_TMP' as #CR_TMP, * from #CR_TMP
print 'here 1'

selectクエリを実行すると、約583行が表示されます。しかし、私が上記の手順を実行すると。挿入手順で動かなくなっていると思います。「挿入後」の結果は得られますが、「ここ1」の印刷の結果は得られません。この手順を2時間実行しましたが、同じ場所でスタックしていました。ここにポインタはありますか?

selectクエリを実行すると、約583行が表示されます。しかし、私が上記の手順を実行すると。挿入手順で動かなくなっていると思います。「挿入後」の結果は得られますが、「ここ1」の印刷の結果は得られません。この手順を2時間実行しましたが、同じ場所でスタックしていました。ここにポインタはありますか?

4

1 に答える 1

1

この部分を除いて、手順は適切に見えます。

print 'After insert'
select '#CR_TMP' as #CR_TMP, * 
from #CR_TMP
print 'here 1'

これを次のように変更してみてください。

print 'After insert'
select '#CR_TMP' as [#CR_TMP], * 
from #CR_TMP
print 'here 1'

または、最初の部分を削除することもできますselect

print 'After insert'
select * 
from #CR_TMP
print 'here 1'

編集:

チャットでの議論の結果、sanikaが問題であると考えたストアドプロシージャの最初の部分が実際に機能していることがわかりました。だから私は彼らが実際の問題がどこにあるかを決定するためにテストに戻ってクエリを実行することからクエリを開始することをアドバイスしました。その時点で、30ページのストアドプロシージャをデバッグする方が簡単になります。

于 2012-08-16T21:06:07.857 に答える