sql - 消息 102,级别 15,状态 1,过程 <procedure_name>,第 40 行 '(' 附近的语法不正确

标签 sql sql-server sql-server-2005

select * from dbo.split(RTRIM(@importRow), '¬')

给出错误:

Msg 102, Level 15, State 1, Procedure proc_name, Line 40
Incorrect syntax near '('.

该行的正确语法是什么?我已经有一段时间没有正确执行 SQL 了,但我一生都无法执行这部分脚本!

使用 SQL Server 2005

我对标题表示歉意。除了“语法错误”之外,不太确定该放什么!

编辑:SPLIT 的代码:

CREATE FUNCTION [dbo].[Split]
(
        @String VARCHAR(4000),
        @Delimiter VARCHAR(5)
)
RETURNS @SplittedValues TABLE
(
  OccurenceId SMALLINT IDENTITY(1,1),
  SplitValue VARCHAR(4000)
)
AS
BEGIN
DECLARE @SplitLength INT

WHILE LEN(@String) > 0
BEGIN
        SELECT @SplitLength = (CASE CHARINDEX(@Delimiter,@String) WHEN 0 THEN
LEN(@String) ELSE CHARINDEX(@Delimiter,@String) -1  END)

        INSERT INTO @SplittedValues
        SELECT SUBSTRING(@String,1,@SplitLength)

        SELECT @String = (CASE (LEN(@String) - @SplitLength) WHEN 0 THEN ''
ELSE RIGHT(@String, LEN(@String) - @SplitLength - 1) END)
END
RETURN
END
GO

以及启动程序的代码

CREATE PROCEDURE dbo.[procedure] 
-- Add the parameters for the stored procedure here
@RETURN_VALUE int,
@importRow VarChar(8000)
......

最佳答案

将 RTRIM 移至 UDF 本身(基于注释)

无论如何,这是一个很好的做法,因此每次使用 split UDF 都不需要 RTRIM

关于sql - 消息 102,级别 15,状态 1,过程 <procedure_name>,第 40 行 '(' 附近的语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8152703/

相关文章:

SQL INSERT INTO SELECT,组合 varchar 列

sql - 如何将 SELECT 查询的每个结果插入三个新行到同一个表中

sql-server - varchar 和 nvarchar 有什么区别?

sql - UPPER() 和 LOWER() 不需要?

python - 为 Django 查询强制 INNER JOIN

sql - SSIS : how to run stored procedure in Data Flow Task

sql - SP_WHO2有条件吗?

php - 电话可以用来传播本地主机的使用吗?

c# - 执行阅读器 : Connection property has not been initialized

sql-server - 实现键、索引、约束的命名标准