2013-02-12 161 views
0

我如何做一个T-SQL存储过程返回该SELECT语句的(表格)结果:T-SQL存储过程返回表

USE automation 

SELECT insurer.name, 
insurer.case_name, 
contact.name, 
contact_address.line_1, 
contact_address.city, 
state.state_abbr, 
contact_address.zip 

FROM person as insurer 

INNER JOIN persons_relationship on persons_relationship.person2_id = insurer.person_id 
INNER JOIN person contact on contact.person_id = persons_relationship.person_id 
INNER JOIN person_address contact_person_address on contact_person_address.person_id = contact.person_id 
INNER JOIN address contact_address on contact_address.address_id = contact_person_address.address_id 
INNER JOIN state on state.state_id = contact_address.state_id 

insurer.person_class_id = 2 

回答

-1

把这个查询在存储过程中,当你将运行此存储过程,你会得到表格结果

1

做这样的事情:

USE Automation 
GO 

CREATE PROCEDURE dbo.YourProcedureNameHere 
AS 
    SELECT 
     insurer.name, 
     insurer.case_name, 
     contact.name, 
     contact_address.line_1, 
     contact_address.city, 
     state.state_abbr, 
     contact_address.zip 
    FROM 
     person as insurer 
    INNER JOIN 
     persons_relationship on persons_relationship.person2_id = insurer.person_id 
    INNER JOIN 
     person contact on contact.person_id = persons_relationship.person_id 
    INNER JOIN 
     person_address contact_person_address on contact_person_address.person_id = contact.person_id 
    INNER JOIN 
     address contact_address on contact_address.address_id = contact_person_address.address_id 
    INNER JOIN 
     state on state.state_id = contact_address.state_id 

就大功告成了。现在,你可以叫你的语句为:

EXEC sp_executesql N'dbo.YourProcedureNameHere' 
+0

我很好奇你为什么选择在'EXEC dbo.YourProcedureNameHere'上面使用'sp_executesql'。有充分的理由,还是只有个人喜好? – 2013-02-12 06:00:52

+0

@Cory:这是做这件事的首选方式,因为它可以让你指定存储过程的参数(这里当然没有)。请参阅[Kimberly Tripp关于EXEC和sp_executesql如何不同的博客文章](http://www.sqlskills.com/blogs/kimberly/exec-and-sp_executesql-how-are-they-different/)以及为什么'sp_executesql'是首选的方式 – 2013-02-12 06:02:14

+0

我习惯于在某些数据映射程序和其他ORM中看到'sp_executesql',但我从来没有想过在基本存储过程执行中彻底使用它。谢谢你的提示! – 2013-02-12 06:09:01

0

我建议你也把

SET NOCOUNT ON 

AS后直。一些数据访问库被x记录影响消息所困惑,并且这将其关闭。