SQL–產生Insert,Update預存程序的過程

來源:互聯網
上載者:User

 

  1. CREATE PROC AddUpTable
  2.   @tableName      NVARCHAR(50),
  3.   @fileName       NVARCHAR(1000),
  4.   @fileCount      VARCHAR(8000),
  5.   @addUpYN        BIT,
  6.   @whereStr       NVARCHAR(1000) = NULL,
  7.   @groupStr       NVARCHAR(1000) = NULL,
  8.   @inUpdateNum    SmallInt   OUTPUT
  9. AS
  10.   declare   @sqlStr   VARCHAR(8000)
  11.   declare   @startFileName    INT
  12.   declare   @endFileName      INT
  13.   declare   @startFileCount   INT
  14.   declare   @endFileCount     INT
  15.   IF @addUpYN = 1
  16.     BEGIN
  17.       SET @sqlStr = 'INSERT INTO ' + @tableName + ' (' + @fileName + ') VALUES (' + @fileCount + ')'
  18.     END
  19.   ELSE
  20.     BEGIN
  21.       SET @fileName = @fileName + ','
  22.       SET @fileCount = @fileCount + '|||'
  23.       SET @sqlStr = 'UPDATE ' + @tableName
  24.       SET @startFileName = 1
  25.       SET @startFileCount = 1
  26.       SET @endFileName = CHARINDEX(',', @fileName, @startFileName)
  27.       SET @endFileCount = CHARINDEX('|||', @fileCount, @startFileCount)
  28.       SET @sqlStr = @sqlStr + ' SET '
  29.       WHILE (@endFileName <> 0)
  30.         BEGIN
  31.           SET @sqlStr = @sqlStr + SUBSTRING(@fileName, @startFileName, @endFileName-@startFileName) + '='
  32.           SET @startFileName = @endFileName + 1
  33.           SET @endFileName = CHARINDEX(',', @fileName, @startFileName)
  34.  
  35.           SET @sqlStr = @sqlStr + '''' + SUBSTRING(@fileCount, @startFileCount, @endFileCount-@startFileCount) + ''','
  36.           SET @startFileCount = @endFileCount + 3
  37.           SET @endFileCount = CHARINDEX('|||', @fileCount, @startFileCount)
  38.         END
  39.         SET @sqlStr = SUBSTRING(@sqlStr, 1, LEN(@sqlStr)-1)
  40.         IF (@whereStr != '')
  41.           BEGIN
  42.             SET @sqlStr = @sqlStr + ' WHERE ' + @whereStr
  43.           END
  44.          IF (@groupStr != '')
  45.           BEGIN
  46.             SET @sqlStr = @sqlStr + ' GROUP BY ' + @groupStr
  47.           END
  48.    END
  49.   PRINT @sqlStr
  50.   BEGIN TRANSACTION
  51.     EXEC(@sqlStr)
  52.     IF @@error=0
  53.       BEGIN
  54.         COMMIT TRANSACTION
  55.         SET @inUpdateNum = 1
  56.       END
  57.     ELSE
  58.       BEGIN
  59.         ROLLBACK TRANSACTION
  60.         SET @inUpdateNum = 0
  61.       END
  62.  
  63.  
  64. GO

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.