2017-12-02 9 views
0

を選択に挿入し、それぞれでストアドプロシージャを実行します。私はこのようなクエリがある

​​

私が持っている唯一の問題は、パラメータ@iTACE_KEYである - それはユニーク(主キー)と、このように生成されます。

EXEC @iTACE_KEY = sp_GETKEY 'JETACE', '0', '1', '9', @iUserId, @cTask='2' 

Iは、SELECT文の行ごとにこの文を実行したいので、各挿入が発生@iTACE_KEYとテーブルJETACEから採取TASK_KEY/CAET_KEYから合成されるであろう。これは可能ですか?

+1

ないPROCで。 procがデータを変更しないと仮定して、procをクエリで使用する関数に変換することができます。 –

+0

select文で呼び出すことができる主キー生成コードを保持する関数の作成を検討しましたか? – danielcooperxyz

+1

ところで、ストアドプロシージャ名の接頭辞 'sp_'は、[documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/create-procedure-トランザクションSQL)。 –

答えて

0

私はカーソルで問題を解決しました:

DECLARE JETACE_01 cursor for 
      SELECT CAET_KEY, TACE_SRT, TACE_STA 
      FROM JETACE 
      WHERE TASK_KEY = @iTASK_KEY_CON 

      OPEN JETACE_01 
      FETCH NEXT FROM JETACE_01 
      INTO @iCAET_KEY, @cTACE_SRT, @cTACE_STA 


      WHILE @@FETCH_STATUS = 0 
      begin 

      EXEC @iTACE_KEY = sp_GETKEY 'JETACE', '0', '1', '9', @iUserId, @cTask='2' 
      IF (@@ERROR <> 0) OR (@iTACE_KEY < 0) 
      BEGIN 
       IF @cTask = '6' 
        SELECT -61 TACE_KEY 
       RETURN -61 
      END 

      INSERT INTO JETACE (TACE_KEY, TASK_KEY, CAET_KEY, TACE_SRT, TACE_STA, TACE_DAT, TACE_UAD, TACE_TAD) 
      VALUES(@iTACE_KEY, @iTASK_KEY, @iCAET_KEY, @cTACE_SRT, @cTACE_STA, GETDATE(), @iUserId, GETDATE()) 


      FETCH NEXT FROM JETACE_01 
      INTO @iCAET_KEY, @cTACE_SRT, @cTACE_STA 

      END 


      CLOSE JETACE_01 
      DEALLOCATE JETACE_01 
関連する問題