2013-07-01 56 views
1

我有一个tabe的值函数叫做“GetLogInfosMsg”,我想运行一些特定的表。下面的代码不起作用;我得到消息“当EXISTS没有引入子查询时,只能在选择列表中指定一个表达式”。有人能帮助我吗?谢谢。使用select语句运行函数

SELECT 
    @pErrMsgID = [MsgID], 
    @pParams = [Params] 
FROM 
    [dbo].[GetLogInfoMsg]((SELECT 
           [FIELD1], 
           [FIELD2], 
           [FIELD3] 
          FROM [dbo].[TABLE1] 
          WHERE [TABLE1].[UUID] = @pUUID)); 

回答

1

试试这个

你有

SELECT @pErrMsgID = [MsgID] , 
     @pParams = [Params] 
FROM [dbo].[GetLogInfoMsg]((SELECT [FIELD1] 
           FROM [dbo].[TABLE1] 
           WHERE [TABLE1].[UUID] = @pUUID 
          ), (SELECT [FIELD2] 
            FROM  [dbo].[TABLE1] 
            WHERE [TABLE1].[UUID] = @pUUID 
           ), (SELECT [FIELD3] 
             FROM  [dbo].[TABLE1] 
             WHERE  [TABLE1].[UUID] = @pUUID 
            )) ; 
+0

这工作, 非常感谢! – Menno

+0

所以请标记为正确答案 –

0

如果您正在使用MSSQL 2005+考虑使用传递的参数在不同的不以表格的形式是:

SELECT 
    @pErrMsgID = t2.[MsgID], 
    @pParams = t2.[Params] 
FROM [dbo].[TABLE1] t1 
CROSS APPLY (SELECT [MsgID], [Params] 
FROM [dbo].[GetLogInfoMsg] (t1.FIELD1, t1.FIELD2, t1.FIELD3) t2 
WHERE t1.[UUID] = @pUUID