sql存储过程:通用删除数据
经过修改利用上了事务.对于ASP开发时获取输出参数的值来判断是否执行成功
有哪些地方没有处理好的
请大侠纠正
- */ ------------------------------------------------------------
- */ 出自: 歌特中国 http://www.cngothic.com
- */ 作者: cngothic
- */ ------------------------------------------------------------
- CREATE PROC DeleteTable
- @tableName NVARCHAR(30),
- @whereStr NVARCHAR(500) = NULL,
- @groupStr NVARCHAR(50) = NULL,
- @deleteNum smallInt OUTPUT
- AS
- DECLARE @sqlStr NVARCHAR(1000)
- SET @sqlStr = 'DELETE FROM ' + @tableName
- if (@whereStr != '')
- BEGIN
- SET @sqlStr = @sqlStr + ' WHERE ' + @whereStr
- END
- if (@groupStr != '')
- BEGIN
- SET @sqlStr = @sqlStr + ' GROUP BY ' + @whereStr
- END
-
- BEGIN TRANSACTION
- EXEC(@sqlStr)
- IF @@error=0
- BEGIN
- COMMIT TRANSACTION
- SET @deleteNum = 1
- END
- ELSE
- BEGIN
- ROLLBACK TRANSACTION
- SET @deleteNum = 0
- END
-
- GO
COMMIT TRANSACTION, CREATE PROC, DELETE FROM, ROLLBACK TRANSACTION, sql存储过程, 删除数据
sql存储过程:通用写入更新数据
经过再次僚属纠正了些错误.也采用了事务来操作
有哪些地方没有处理好的
请大侠纠正
- */ ------------------------------------------------------------
- */ 出自: 歌特中国 http://www.cngothic.com
- */ 作者: cngothic
- */ ------------------------------------------------------------
- CREATE PROC AddUpTable
- @tableName NVARCHAR(50),
- @fileName NVARCHAR(1000),
- @fileCount VARCHAR(8000),
- @addUpYN BIT,
- @whereStr NVARCHAR(1000) = NULL,
- @groupStr NVARCHAR(1000) = NULL,
- @inUpdateNum SmallInt OUTPUT
- AS
- declare @sqlStr VARCHAR(8000)
- declare @startFileName INT
- declare @endFileName INT
- declare @startFileCount INT
- declare @endFileCount INT
- IF @addUpYN = 1
- BEGIN
- SET @sqlStr = 'INSERT INTO ' + @tableName + ' (' + @fileName + ') VALUES (' + @fileCount + ')'
- END
- ELSE
- BEGIN
- SET @fileName = @fileName + ','
- SET @fileCount = @fileCount + '|||'
- SET @sqlStr = 'UPDATE ' + @tableName
- SET @startFileName = 1
- SET @startFileCount = 1
- SET @endFileName = CHARINDEX(',', @fileName, @startFileName)
- SET @endFileCount = CHARINDEX('|||', @fileCount, @startFileCount)
- SET @sqlStr = @sqlStr + ' SET '
- WHILE (@endFileName <> 0)
- BEGIN
- SET @sqlStr = @sqlStr + SUBSTRING(@fileName, @startFileName, @endFileName-@startFileName) + '='
- SET @startFileName = @endFileName + 1
- SET @endFileName = CHARINDEX(',', @fileName, @startFileName)
-
- SET @sqlStr = @sqlStr + '''' + SUBSTRING(@fileCount, @startFileCount, @endFileCount-@startFileCount) + ''','
- SET @startFileCount = @endFileCount + 3
- SET @endFileCount = CHARINDEX('|||', @fileCount, @startFileCount)
- END
- SET @sqlStr = SUBSTRING(@sqlStr, 1, LEN(@sqlStr)-1)
- IF (@whereStr != '')
- BEGIN
- SET @sqlStr = @sqlStr + ' WHERE ' + @whereStr
- END
- IF (@groupStr != '')
- BEGIN
- SET @sqlStr = @sqlStr + ' GROUP BY ' + @groupStr
- END
- END
- PRINT @sqlStr
- BEGIN TRANSACTION
- EXEC(@sqlStr)
- IF @@error=0
- BEGIN
- COMMIT TRANSACTION
- SET @inUpdateNum = 1
- END
- ELSE
- BEGIN
- ROLLBACK TRANSACTION
- SET @inUpdateNum = 0
- END
-
-
- GO
COMMIT TRANSACTION, CREATE PROCEDURE, ROLLBACK TRANSACTION, sql存储过程, 更新数据