1

如何在没有命令参数的插入语句中调用函数/过程。例如

Insert into myTable (....) values (1,2,mySP_or_mySDF, 3,4)
4

3 回答 3

4

你也可以使用INSERT INTO... SELECT

INSERT INTO myTable (col1, col2, col3....)
SELECT 1, 2, mySP_or_mySDF(), 3, 4

如果INSERT要从存储过程中获取数据,则需要先创建一个临时表并将结果插入到临时表中,然后才能使用结果插入到最终表中。

于 2012-11-21T13:53:51.000 回答
3

尝试

Insert into myTable (....) values (1,2,dbo.mySP_or_mySDF(), 3,4)
于 2012-11-21T13:51:17.090 回答
1

不能在 SELECT/UPDATE/INSERT 语句中调用存储过程,语句 SQL 除外:

insert into <whatever>
    exec <some sql statement here>;

(和相关的结构)。

存储过程并不真正返回值。好吧,它们确实返回一个整数。所以,你可以这样做:

declare @retval int;
exec @retval = mysp;
insert into myTable(col1, col2, col3, col4)
    select 1, 2, @retval, 3, 4

通过在 sp 正文中包含以下语句,您可以让存储过程“返回”所有 4 个值:

select 1, 2, <whatever>, 3, 4

然后插入 myTable(col1, col2, col3, col4) exec mysp;

于 2012-11-21T14:15:47.937 回答