【发布时间】:2013-08-14 02:15:35
【问题描述】:
是否可以使用表作为存储过程的输入?
EXEC sp_Proc SELECT * FROM myTable
我创建了一个函数来返回由单个记录组成的表。
ALTER FUNCTION dbo.preEmail
(
@Num INT,
@WID INT
)
RETURNS
@Results TABLE
(
WID char(10),
Company nchar(50),
Tech nchar(25),
StartDate datetime,
Description varchar(max),
Address varchar(200),
Phone varchar(15),
Status varchar(35)
)
AS
BEGIN
INSERT INTO @Results
(WID, Company, Tech, StartDate, Description, Address, Phone, Status)
SELECT WID, company, tech, startDate, description, address, phone, status
FROM wo_tbl
WHERE Num = @Number AND wid = @WID
RETURN
END
GO
接下来我有一个存储过程,可以向上述记录中安排的技术人员发送电子邮件。
EXEC sp_emailTech @WID, @Company, @Tech, @StartDate, @Description, @Address, @Phone, @Status.
但我宁愿这样做
EXEC sp_emailTech SELECT * FROM dbo.preEmail(1, 5746)
【问题讨论】:
-
什么版本的sql server?
-
您可以传入表名,然后从动态 SQL 执行您的操作。但为什么?您真正想要完成什么?你应该问这个问题,而不是问如何以这种特定方式解决这个问题。
-
我使用的是 Microsoft SQL 2005
-
存储过程为另一个发送电子邮件的存储过程获取多个字段的 1 条记录。
-
好的,所以您真正需要的是为表中的每一行执行一个存储过程,对吧?您能否更新问题以使其更清楚,并删除有关将表或查询传递到存储过程的部分?
标签: sql sql-server sql-server-2005