如何在insert语句中调用函数/过程

时间:2012-11-21 13:50:31

标签: sql sql-server

如何在没有命令参数的情况下在insert语句中调用函数/过程。 e.g。

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

3 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分: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;