私は3つのテーブルを持っています
Table_Aたくさんの行がありますTable_Bどこからのデータで行が挿入されるかTable_ATable_Cと呼ばれる数 (整数) を保持しますcode_number
sp_getNextCode現在のcode_numberfromを選択し、この番号 (のようなもの) でコード文字列をTable_C作成して返し、次の値 ( )で更新するストアド プロシージャ ( ) があります。varcharyyyyMMdd + cast(code_number as varchar)Table_C code_numbercode_number+1
ここまでは順調ですね。
今、私はCURSOR を使用せ ずに からTable_Aまでの行を挿入したいと思いますTable_B
INSERT INTO TABLE_B
SELECT .... FROM TABLE_A
繰り返しますが、これまでのところとても良いです
問題は、上記の挿入ステートメントの値の 1 つがストアド プロシージャの出力でなければならないことsp_getNextCodeです。
- ステートメントでストアド プロシージャを使用できません
- 関数が持つことができないのと同じコードで関数を作成することは
sp_getNextCodeできませんINSERT/UPDATE/DELETE
SQL Server 2012 (シーケンスがある) のオプションはありません。SQL Server 2008 のみです。
これを達成する方法はありますか、それとも唯一の方法はカーソルを使用することです(カーソルを避けたいのは、挿入する必要がある何千もの行について話していて、時間がかかりすぎるためです)