2013-05-21 124 views
0

我创建一个T-SQL函数,我得到了一个错误:SQL函数 “声明标量变量”

Must declare scalar variable @UserId

代码:

CREATE FUNCTION dbo.AccountsOfTheUser 
(@UserId INT) 
RETURNS TABLE 
AS 
RETURNS 
(
    SELECT 
     dbo.accounts.account_id, dbo.accounts.account_name, 
     dbo.account_type.description, dbo.users.user_name, dbo.users.first_name, 
     dbo.users.midle_name, dbo.users.email, dbo.account_type.type_name 
    FROM 
     dbo.accounts 
    INNER JOIN 
     dbo.account_type ON dbo.account_type.type_id = dbo.accounts.type_id 
    INNER JOIN 
     dbo.users ON dbo.accounts.user_id = dbo.users.user_id 
    WHERE 
     (dbo.accounts.user_id = @UserId) 
); 
+5

'AS RETURNS'应该是'AS RETURN'除了它看起来好像mssql –

+1

@AlexK。做出答案? – gbn

+1

虽然执行时得到的错误信息是'RETURNS''附近的错误语法。我认为'必须声明标量变量@UserId'显示为intellisense? –

回答

4
CREATE FUNCTION dbo.AccountsOfTheUser 
(@UserId INT) 
RETURNS TABLE 
AS 
RETURN 
(
SELECT dbo.accounts.account_id, dbo.accounts.account_name,  dbo.account_type.description, dbo.users.user_name, dbo.users.first_name, 
      dbo.users.midle_name, dbo.users.email, dbo.account_type.type_name 
FROM dbo.accounts INNER JOIN 
      dbo.account_type ON dbo.account_type.type_id = dbo.accounts.type_id INNER JOIN 
      dbo.users ON dbo.accounts.user_id = dbo.users.user_id 
    WHERE (dbo.accounts.user_id = @UserId) 
); 
+1

谢谢......并为我的无知感到抱歉。 –

0

唯一的问题我看到过的手是应该是RETURN的第二个RETURNS

CREATE FUNCTION dbo.AccountsOfTheUser 
(@UserId INT) 
RETURNS TABLE 
AS 
RETURN 
1
CREATE FUNCTION dbo.AccountsOfTheUser 
(@UserId INT) 
RETURNS TABLE 
BEGIN 
    RETURN (SELECT ...) 
END