【问题标题】:SQL Server stored procedure - logic to return 3 character line numbers that includes alphanumeric resultsSQL Server 存储过程 - 返回包含字母数字结果的 3 个字符行号的逻辑
【发布时间】:2018-02-28 22:40:25
【问题描述】:
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 server 到另一个。目前,它获取的数据只有两个字符,但添加了一条新的生产线,并添加了一个识别包含字母数字的 3 char 行号的附加功能。有什么建议吗?

【问题讨论】:

  • 你错过了一些东西。
  • 它不允许我在这里发布全部内容
  • 请阅读this,了解一些改进问题的技巧。

标签: sql-server tsql stored-procedures


【解决方案1】:

听起来您想将函数修改为 3 个字符后缀的新变化并匹配您的工作表。

dbo.[GetabcLine](@TableName) --==>
SET @LineNum = CASE WHEN REPLACE(RIGHT(@TableName, 3), 'e', '0') = '00'
                                                    THEN '0' 
                                                    ELSE REPLACE(RIGHT(@TableName, 3), 'e', '0')
                                               END

我将您的脚本包含在我的在线 SQL 操场中: https://sqleditor.net/q/BJpRYsHuM

您可以保存您的版本并向我展示有关您的问题的更多详细信息。

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多