2013-02-12 96 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記錄影響消息所困惑,並且這將其關閉。