ソフトウェアの更新後に一部のデータを変換するスクリプトを作成しています。私は新しいテーブルを導入しており、既存のテーブルからこの新しいテーブルにデータを抽出する必要があります。あるテーブルから既存のvarchar(max)フィールドを取り出し、別のテーブルに親子レコードを作成し、別のテーブルに新しい親レコードのIDを挿入する必要があります。 レコードを挿入するために使用されているSELECTステートメントにストアドプロシージャの結果を返す方法
は、だから、ちょっとだけ新しいテーブルに直接移行されている上記の例のval1とval2の分野では、このINSERT INTO NEWTABLE (val1, val2, val3)
SELECT
val1,
val2,
EXEC AStoredProc(val3) -- this obviosuly doesnt work
FROM EXISTINGTABLE
CREATE PROCEDURE AStoredProc
@Value nvarchar(max),
@NewID int OUTPUT
DECLARE @ParentID int
INSERT INTO AnotherTable ([Text], ParentNodeID)
VALUES ('',NULL)
SELECT @ParentID = SCOPE_IDENTITY()
INSERT INTO AnotherTable ([Text], ParentNodeID)
VALUES (@Value,@ParentID)
SELECT @ParentID
END
に見えるようにしたいです。新しいテーブルのval3はintで、AStoredProcの結果から挿入されています。これは、Existingテーブルのvarchar(max)val3値を取ると、別のテーブルにいくつかのレコードが作成され、新しい親IDが返されます。新しいテーブルにval3として挿入されます。
デザインの面倒を気にすることなく、基本的にStored Procでいくつかの挿入物を実行し、その結果を外部Select文に直接戻すことができますか?
ええ、私は一種の彼らは私のオプションも考えました。私はカーソルアプローチのために行くつもりだと思う。私は簡単にロールバック可能なトランザクションで行うことができると期待していました。 –
@StewartAlan ...オプション2 ;-)を終了させることができます。 –
@StewartAlanは競合オプション#2を参照してください:) –