如何在没有命令参数的情况下在insert语句中调用函数/过程。 e.g。
Insert into myTable (....) values (1,2,mySP_or_mySDF, 3,4)
答案 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;