这阵子一直没有发布新的日志.工作中一直开发一个项目.我把项目迁移回家时出现了一个问题.
页面与sql进行多次通信是就会很慢.很简单的一个页面搞了30多秒还没有显示出来.当时以,IIS, 伪静态, 程序, windows系统 进行排查.找原因.为什么没有考虑到sql2005尼.我在SQL里查询测试了很快,也不没有去考虑它.找了一圈的原因后来还是不行.系统也还原了.无耐我从新安装WINDOWS 2008.下面安装SQL2005.这时查询机器配置时提示一个警告.这项就是IIS.我想不为吧.以前安装好像不会提示这个警告的.这次小心的没有接着安装.把SQL 2008解压出来后安装.
下面结果很显然.的确是SQL 2005的问题.SQL 2008下面页面跑的唰唰的.
sql 2005
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存储过程, 更新数据
sql语句:CASE WHEN精妙语句
说种情况如商品价格,把不同区域的价格的小数改变成.49, .75, .99以便促销活动。
下面SQL语句代码描述。价格提10%后把小数位改成49, .75, .99
- SELECT @Markup = .10
- SELECT @Multiplier = @Markup +1
- SELECT TOP 10 ProductID, ProductName, UnitPrice, UnitPrice * @Multiplier AS "Marked Up Price", "New Price" =
- CASE
- WHEN FLOOR(UnitPrice * @Multiplier + .24) > FLOOR(UnitPrice * @Multiplier) THEN FLOOR(UnitPrice * @Multiplier) + .95
- WHEN FLOOR(UnitPrice * @Multiplier + .5) > FLOOR(UnitPrice * @Multiplier) THEN FLOOR(UnitPrice * @Multiplier) + .75
- ELSE FLOOR(UnitPrice * @Multiplier) + .49
- END
- FROM Products
- ORDER BY ProductID DESC
此代码语句中用到了CASE WHEN条件语句与FLOOR函数,先解释下
FLOOR把数值取整:
- PRINT FLOOR(12.1)
- --返回12
- PRINT FLOOR(12.9)
- --返回12
CASE WHEN条件语句稍有些编程基础的人应该都有看懂重点不解释这个语句怎么用的。说下上面代码。个人认为还是比较精妙的
- SELECT @Markup = .10
- SELECT @Multiplier = @Markup +1
- UnitPrice * @Multiplier
把价格提升10%。
- FLOOR(UnitPrice * @Multiplier + .24) > FLOOR(UnitPrice * @Multiplier) THEN FLOOR(UnitPrice * @Multiplier) + .95
- --FLOOR(18.00 * 1.1 + .24) > FLOOR(1.8 * 1.1)
- --FLOOR(19.8 + .24) > FLOOR(19.8)
- --21 > 19.8
- --成立后返回FLOOR(19.8) + .95,这也是为什么+.24而不是其它数值。综合上面CASE WHEN语句就能更好的理解
CASE WHEN, floor(), sql语句