【发布时间】:2020-10-01 10:58:02
【问题描述】:
我创建了带有 3 个参数的过程,面临的问题是参数之间有斜线和空格。在第三个参数处出现错误,说明 360 处的语法错误。
CREATE PROC getMaxModelVersionNumber( @PassedTableName as NVarchar(255) , @modelName as NVarchar(255), @modelViewName as NVarchar(255) )
AS
BEGIN
DECLARE @ActualTableName AS NVarchar(255)
SELECT @ActualTableName = QUOTENAME( TABLE_NAME )
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @PassedTableName
DECLARE @sql AS NVARCHAR(MAX)
SELECT @sql = ' SELECT MAX(modelVersionNumber) FROM ' + @ActualTableName+
' WHERE modelName=' + @modelName + ' AND modelViewName=' + @modelViewName+ ';'
EXEC(@SQL)
END
EXEC getMaxModelVersionNumber @PassedTableName = 'Läufe', @modelName = 'D1088_x_XX-_M_00_0000_00_x.rvt ', @modelViewName = 'BIM 360 // Design Model // IFC Export // Navisworks'
收到此错误
Msg 102, Level 15, State 1, Line 18
Incorrect syntax near '360'.
【问题讨论】:
-
请分享更多细节,因为所有作品:dbfiddle.uk/…
-
仅供参考,对象名称的最大长度为 128 个字符,因为它们的名称使用
sysname数据类型(nvarchar(128) NOT NULL的同义词),所以最好使用sysname用于参数而不是nvarchar(255)(因为最后 127 个字符实际上毫无意义)。我还建议将模式名称作为参数传递;即使您在省略时默认为N'dbo'。 -
我可以将 3 个参数直接传递给 SQL 查询,而不是使用 QUOTENAME( TABLE_NAME ) 从信息架构中选择表名吗?
标签: sql sql-server database