0

我有一个 sql 函数并使用 sql server 2005。

dbo.util (@dailyDate,@userId)

现在我想为特定日期的每个@userId 调用这个函数。所以我正在编写一个存储过程。

Create PROCEDURE [dbo].[DailyAttendenceTemp]
 @dailyDate nvarchar(10)
WITH EXEC AS CALLER
AS
Select * FROM dbo.util (@dailyDate,@userId) //I think error is here.
WHERE @userId in (SELECT UserId From TTransactionLog1)
GO

但是当我执行该程序时,它给出的错误是-

SQL Server 数据库错误:必须声明标量变量“@userId”。

所以请告诉我如何更正该过程,以便我只给出日期作为参数,并且它为每个@userId 运行相同的函数。

4

1 回答 1

0

我得到了答案,现在我正在使用 While 循环,它解决了我的问题......

DECLARE @i int
DECLARE @userid nvarchar(10)
DECLARE @numrows int

DECLARE @tempUserId_table TABLE (
    idx smallint Primary Key IDENTITY(1,1)
    , userid nvarchar(10)
)

INSERT @tempUserId_table
SELECT distinct UserID FROM TUser 


-- enumerate the table
SET @i = 1
SET @numrows = (SELECT COUNT(*) FROM @tempUserId_table)
IF @numrows > 0
    WHILE (@i <= (SELECT MAX(idx) FROM @tempUserId_table))
    BEGIN


        -- get the next userId primary key
        SET @userid = (SELECT userid FROM @tempUserId_table WHERE idx = @i)



          Select * FROM dbo.util (@dailyDate,@userid) 


        -- increment counter for next userId
        SET @i = @i + 1
    END
于 2013-05-09T06:51:07.317 回答