尝试使用存储过程将函数结果存储到变量时出错

时间:2014-11-21 09:14:02

标签: sql-server function parsing stored-procedures triggers

我试图创建一个存储过程或触发器,它将函数结果存储在变量中并将其插入表中。

这是解析原始数据的函数

 ALTER FUNCTION [dbo].[ufn_Parserstring] 
    (@StringInput VARCHAR(max))
 RETURNS @OutputTable TABLE ([String] VARCHAR(max))
 AS
 BEGIN
      DECLARE @String    VARCHAR(max)

      WHILE LEN(@StringInput) > 0
      BEGIN
         SET @String = LEFT(@StringInput, 
                            ISNULL(NULLIF(CHARINDEX(',', @StringInput) - 1, -1),
                            LEN(@StringInput)))
         SET @StringInput = SUBSTRING(@StringInput,
                                      ISNULL(NULLIF(CHARINDEX(',', @StringInput), 0),
                                      LEN(@StringInput)) + 1, LEN(@StringInput))

         INSERT INTO @OutputTable ([String])
         VALUES (@String)
      END

      RETURN
 END

在解析原始数据后,我将使用存储过程调用结果,该存储过程将结果存储在变量

这是我尝试的存储过程

如果错误,请提出建议

declare @str2 varchar(max)
declare @account varchar(max)
declare @GPS varchar(max)

set @str2  = (SELECT TOP 1 smsmsg FROM GPRSIN)

set @account = (SELECT TOP 2 * 
                FROM 
                   (SELECT 
                       String, ROW_NUMBER() OVER (ORDER BY String desc) AS Rownumber
                    FROM [dbo].[ufn_Parserstring] ( replace(@str2,';',','))) results
                WHERE results.Rownumber = 2)

set @GPS = (SELECT TOP 1 * 
            FROM 
                (SELECT 
                     String, ROW_NUMBER() OVER (ORDER BY String desc) AS Rownumber
                FROM [dbo].[ufn_Parserstring] (replace(@str2,';',','))) results
            WHERE results.Rownumber = 1)

每当我尝试运行此操作时,我都会收到此错误

  

当EXISTS没有引入子查询时,只能在选择列表中指定一个表达式。

如果你需要流程,那么这里就是流程

351856040489593
241111
 1R
 141119040115
 A
 1422.1425N
12103.1746E
0.0
151
1.8
01000006

rawdata - >由函数解析器解析,得到如上所示的结果。 - >我试图做的SP会将查询结果存储到变量 - >将变量的值插入某个表(例如tblblablabla)

请帮助我们。

感谢。

0 个答案:

没有答案