源代码的语法问题
Syntax issue on the source
我正在将 SQL Server 2008 数据库迁移到 SQL Server 2019,我使用了 Microsoft 数据迁移助手来查找任何重大更改、问题或语法错误。
我的某些程序出现错误:
Object [dbo].[PROCEDURE1] has syntax errors. Must declare the variable or parameter "@SINI". Error number 70590. For more details, please see: Line 9, Column 16.
这是我的程序:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PROCEDURE1]
@Refer AS varchar,
@Ret Decimal OUTPUT
AS
DECLARE @SIni AS Decimal
SET @SIni= (SELECT Ini FROM Table1 WHERE Refer = @Refer)
SET @Ret = @SINI
可能您的服务器具有区分大小写的排序规则。如 documentation 中所述,变量、GOTO 标签、临时存储过程和临时表的 标识符位于服务器实例的默认排序规则中。。您可以使用以下简单语句进行检查:
SELECT SERVERPROPERTY('collation');
但是,要修复错误,请使用正确的区分大小写的变量名称:
...
SET @Ret = @SIni
...
作为附加说明,请使用适当的长度声明您的数据类型(如@Larnu 所评论的)。长度属性是可选的,在参数声明的情况下,SQL 服务器将 1
分配为长度,因此 @Refer
参数的数据类型为 varchar(1)
.
我正在将 SQL Server 2008 数据库迁移到 SQL Server 2019,我使用了 Microsoft 数据迁移助手来查找任何重大更改、问题或语法错误。
我的某些程序出现错误:
Object [dbo].[PROCEDURE1] has syntax errors. Must declare the variable or parameter "@SINI". Error number 70590. For more details, please see: Line 9, Column 16.
这是我的程序:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PROCEDURE1]
@Refer AS varchar,
@Ret Decimal OUTPUT
AS
DECLARE @SIni AS Decimal
SET @SIni= (SELECT Ini FROM Table1 WHERE Refer = @Refer)
SET @Ret = @SINI
可能您的服务器具有区分大小写的排序规则。如 documentation 中所述,变量、GOTO 标签、临时存储过程和临时表的 标识符位于服务器实例的默认排序规则中。。您可以使用以下简单语句进行检查:
SELECT SERVERPROPERTY('collation');
但是,要修复错误,请使用正确的区分大小写的变量名称:
...
SET @Ret = @SIni
...
作为附加说明,请使用适当的长度声明您的数据类型(如@Larnu 所评论的)。长度属性是可选的,在参数声明的情况下,SQL 服务器将 1
分配为长度,因此 @Refer
参数的数据类型为 varchar(1)
.