存储具有输出值的Proc

时间:2009-07-08 19:04:34

标签: stored-procedures

我需要创建一个将返回记录的存储过程(多个记录)。我想返回AccountID,FirstName,LastName&电子邮件。

例如,我使用AccountID字段比较两个表。 所以目前我的查询是:

选择AccountID,FirstName,LastName,电子邮件 来自tblCustomers AccountID不在的地方 (从tblVendors中选择AccountID)

4 个答案:

答案 0 :(得分:0)

您可以根据需要在存储过程中选择语句,然后根据您使用的语言,您可以遍历结果集以获取数据。

希望有所帮助,

约什

答案 1 :(得分:0)

不确定您的问题是什么......但您可以使用

创建该过程
CREATE PROCEDURE dbo.spGetNonVendors
AS
BEGIN
  Select AccountID, FirstName, LastName, email 
  from tblCustomers Where AccountID not in (select AccountID from tblVendors)
END

请参阅此处了解创建的存储过程的语法:

http://msdn.microsoft.com/en-us/library/ms187926.aspx

至于如何获取输出,您应该知道存储过程实际上有三种不同的输出源:

  1. 输出参数
  2. 结果集
  3. 消息
  4. 如果查看我引用的页面上的文档,您将看到如何声明输出变量。这些对单个值很有用,但不适合你在这里寻找的东西。

    结果集只是您在过程中碰巧运行的任何select语句。正如你从这里的答案中看到的那样,没有什么特别的事情要做,只需执行选择。

    最后,消息输出包含错误消息,打印语句等。

    现在,如何获得您的选择输出取决于您的客户端。你是如何连接到SQL Server并执行该过程的?如果您正在使用Sql Management studio,您将看到结果集和消息的两个选项卡。如果您正在使用C#,SqlDataAdapter或SqlDataReader将自动从您的结果集中读取。

答案 2 :(得分:0)

CREATE PROCEDURE Procedurename
AS
BEGIN
    Select AccountID, FirstName, LastName, email
    from tblCustomers
    where AccountID not in (select AccountID from tblVendors)
END

答案 3 :(得分:0)

所以,只需将其放入程序中:

create procedure CompareCustomers
as

select AccountID, FirstName, LastName, email
from tblCustomers
where AccountID not in (select AccountID from tblVendors)

但我更喜欢加入“不在”:

create procedure CompareCustomers
as

select c.AccountID, c.FirstName, c.LastName, c.email
from tblCustomers c
left join tblVendors v on v.AccountID = c.AccountID
where v.AccountID is null