【问题标题】:SQL creating a sproc to return dataSQL 创建存储过程以返回数据
【发布时间】:2017-08-07 11:08:50
【问题描述】:

这是一个非常简单的问题,让我很困惑。

我想要做的就是尝试从我正在创建的存储过程中的表中返回一些数据,以便我可以在 SSRS 报告中使用它。

这是我迄今为止的尝试:

CREATE PROCEDURE GetUsageStatistics (@DisplayName VARCHAR(305))
AS 
BEGIN
SELECT DisplayName 
FROM myTable 
WHERE DisplayName = @DisplayName

现在我有一个错误告诉我Incorrect syntax near '@DisplayName'. 但我不确定出了什么问题。我对使用 @ 符号创建变量的理解是,我想要 pass in 我想要的参数,但我想要做的是返回值。

有人可以向我解释一下我对存储过程如何工作以及如何纠正这个问题的理解失败了吗?

【问题讨论】:

  • @juergend 试过了,但还是出现同样的错误,我会更新我的代码示例

标签: sql stored-procedures reporting-services


【解决方案1】:

你肯定错过了END。这行得通吗?

CREATE PROCEDURE GetUsageStatistics (
    @DisplayName VARCHAR(305)
) AS 
BEGIN
    SELECT DisplayName 
    FROM myTable 
    WHERE DisplayName = @DisplayName;
END;

注意事项:

  • 此存储过程毫无意义,因为它返回 NULL 或输入。
  • 您应该考虑改用函数。在这种情况下,标量函数是有意义的(假设通常只会返回一行)。

【讨论】:

  • 谢谢,错误已停止。这是我第一次制作 sproc,我想做的就是从我的表中返回 DisplayName 的值。我正在四处寻找示例,这似乎是如何做到的。我对 SQL 函数一无所知
【解决方案2】:
-- =============================================
USE [YourDBName]
GO
    CREATE PROCEDURE GetUsageStatistics 
        -- Add the parameters for the stored procedure here
        @DisplayName varchar(20) 
    AS
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;

        -- Insert statements for procedure here

    SELECT DisplayName 
    FROM myTable 
    WHERE DisplayName = @DisplayName 

    END
    GO

【讨论】:

    猜你喜欢
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2010-12-13
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多