【发布时间】:2016-09-27 13:05:14
【问题描述】:
我正在编写一个脚本来在软件更新后转换一些数据。我正在引入一个新表,需要将现有表中的数据提取到这个新表中。我需要从一个表中获取一个现有的 varchar(max) 字段,在另一个表中基于它创建一个父子记录,然后在另一个表中插入新父记录的标识。
所以它有点想看起来像这样
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
在上面的示例中,val1 和 val2 字段只是直接迁移到新表中。新表中的 val3 是一个 int 并且是从 AStoredProc 的结果插入的,它采用现有表的 varchar(max) val3 值在另一个表中创建几个记录并从它们返回新的父 ID,然后在新表中作为 val3 插入。
不用担心设计的原因,我怎样才能在存储过程中运行一些插入内容并将结果直接返回到外部 Select 语句?
【问题讨论】:
标签: sql sql-server-2008 tsql