Sql server SQL Server存储过程-返回包含字母数字结果的3个字符行号的逻辑
结束Sql server SQL Server存储过程-返回包含字母数字结果的3个字符行号的逻辑,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,结束 将生产机器值从一个数据库返回到另一个数据库,从一个sql server返回到另一个sql server的存储过程。目前,它只提取了两个字符的数据,但添加了一条新的生产线,并添加了一个识别3个字符的行号(包括字母数字)。有什么建议吗?听起来您想将函数修改为新的3个字符后缀,并与作业表相匹配 OPEN abcTables FETCH NEXT FROM abcTables INTO @TableName WHILE @@FETCH_STATUS = 0 BEGIN
将生产机器值从一个数据库返回到另一个数据库,从一个sql server返回到另一个sql server的存储过程。目前,它只提取了两个字符的数据,但添加了一条新的生产线,并添加了一个识别3个字符的行号(包括字母数字)。有什么建议吗?听起来您想将函数修改为新的3个字符后缀,并与作业表相匹配
OPEN abcTables
FETCH NEXT FROM abcTables INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQLTableName = (SELECT CHAR(39) + @TableName + CHAR(39))
SET @LineNum = CHAR(39) + dbo.[GetabcLine](@TableName) + CHAR(39)
/* = (SELECT CHAR (39)+ CASE WHEN REPLACE(RIGHT(@TableName, 2), 'e', '0') = '00'
THEN '0'
ELSE REPLACE(RIGHT(@TableName, 2), 'e', '0')
END
+ CHAR(39))
*/ Requires more sophisticated logic to return 3 char line numbers that includes alphanumeric results
SET @SQLCmd = 'UPDATE ' + @TableName + ' ' + '
SET [Job#] = jobs.[mode#]
, [Line] = ' + @LineNum + '
, [StartofJob] = jobs.[start date]
, [EndofJob] = CASE WHEN jobs.[end date] = GETDATE() THEN NULL ELSE jobs.[end date] END
, [ModelID] = CASE WHEN [ModelID] IS NULL THEN ' + @dent + '
WHEN [ModelID] = ' + @Tnie + ' THEN ' + @ari + '
ELSE [ModelID]
END
FROM ' + @TableName + ' hrb ' + '
INNER JOIN #Jobs jobs ON hrb.Time1 BETWEEN jobs.[start date] AND jobs.[end date] ' + '
WHERE jobs.[line] = ' + @LineNum + ' ' + '
AND [Time1] >= DATEADD(DAY,-90, GETDATE())'
EXEC (@SQLCmd)
FETCH NEXT FROM abcTables INTO @TableName
END
CLOSE abcTables
DEALLOCATE abcTables
DROP TABLE #Jobs
我将您的脚本包括在我的在线SQL游戏中,如下所示:
您可以保存您的版本,并向我显示有关您的问题的更多详细信息。您遗漏了一些内容。这不允许我在此处发布全部内容。请阅读一些关于改进您的问题的提示。
dbo.[GetabcLine](@TableName) --==>
SET @LineNum = CASE WHEN REPLACE(RIGHT(@TableName, 3), 'e', '0') = '00'
THEN '0'
ELSE REPLACE(RIGHT(@TableName, 3), 'e', '0')
END