
sql
imlmy
这个作者很懒,什么都没留下…
展开
-
游标遍历exec动态sql语句查询结果
游标比较特殊,可以在EXEC()中创建后再引用,通常用于动态游标.可以这样处理:declare @sql varchar(8000),@table sysnameset @table = 'table1'set @sql='DECLARE abc CURSOR FOR select * from ' + @tableexec(@sql)OPEN abc...下面转载 2013-01-06 14:58:36 · 7315 阅读 · 4 评论 -
SQL Server提高并发查询效率
通过去除锁提高SQL Server并发查询效率。不同版本的SQL Server对于并发查询做了不同的优化,导致查询效率差异。原创 2013-07-04 15:49:04 · 3497 阅读 · 1 评论 -
oracle存储过程异常捕获
oracle存储过程异常捕获原创 2013-07-08 17:17:54 · 4539 阅读 · 0 评论 -
ado执行存储过程中包含结果集获取输出参数为VT_EMPTY
ado执行存储过程,如果存储过程中包含结果集返回和输出参数,会导致获取输出参数为VT_EMPTY。目前没有找到对应的原因,网上有提相关问题但是也没人解决。有哪位大侠知道原因的请留个言,也为其他开发人员提供一个解决思路。我目前的解决方法只能针对我遇到的情况。因为我使用的存储过程的返回结果集是中间结果集,不需要使用到,因此只要把返回结果集给去掉就行。不返回结果集的方法是在存储过程中加入SET NO原创 2013-03-18 16:46:54 · 2042 阅读 · 9 评论 -
将union查询结果存入临时表
select t.* into #temp from ( (select a as col from A) union all (select b as col from B) union all (select c as col from C))原创 2013-04-16 15:25:51 · 6240 阅读 · 0 评论 -
使用存储过程代替自定义函数计算CP95
需要创建一个存储过程,实现对于一个数据表中的数据进行统计。不同的字段统计的方式不同,有的是统计最大值,有的是最小值,有的是平均值,还有的是cp95值(即将所有数据从小打大进行排序,选择前95%个值中最大的值。计算cp95值的方式在之前一篇文章中有提到《存储过程获取第n个最大值》)。起初的想法是通过创建自定义聚合函数实现cp95值的统计,实现效果类似于系统函数max等。select max(A)原创 2013-04-15 11:12:33 · 1291 阅读 · 0 评论 -
SQL Server 2008清空数据库日志
使用SQL Server2005清空数据库可用以下sql实现Backup Log DNName with no_loggodump transaction DNName with no_loggoUSE DNName DBCC SHRINKFILE (2)Go不过这个存储过程在SQL Server2008中已经被取消,在2008需要改用以下方式来清空数据库日志原创 2013-03-29 12:26:24 · 1607 阅读 · 0 评论 -
存储过程获取RecordSet的RecordCount为-1
使用ado直接执行sql,可以通过RecordSet的RecordCount获取结果集的数据量。但是如果是执行存储过程,就无法通过RecordCount来获取数据量信息,需要设置连接对象的CursorLocation为CursorLocationEnum::adUseClient,将结果集中所有数据存储到本地才能获取结果集数据量。但是这样导致本地内存占用很大,所以换一个思路,直接在存储过程中用输出原创 2013-03-18 15:24:48 · 2532 阅读 · 0 评论 -
sqlite中文乱码问题解决方案
在VC++中通过sqlite3.dll接口对sqlite数据库进行操作,包括打开数据库,插入,查询数据库等,如果操作接口输入参数包含中文字符,会导致操作异常。例如调用sqlite3_open打开数据库文件,如果文件路径出现中文,就会导致打开失败。sqlite3_exec执行sql语句,如果包含中文对应字符就会变成乱码。这是由于sqlite数据库使用的是UTF-8编码方式,而传入的字符串是ASCII原创 2013-01-14 15:14:48 · 19190 阅读 · 4 评论 -
sqlite循环批量插入数据
需要在sqlite数据库中插入大量测试数据,打算用事务进行循环插入操作,不过sqlite不支持declare变量定义,所以无法通过定义循环变量值来实现。需要通过一个批处理文件来循环调用插入sqlite语句,方式如下建立一个循环调用的批处理文件sqlite.bat,文件内容@ECHO OFFFor /L %%i in (1,1,10000) do (sqlite3.exe test.d原创 2013-01-09 10:26:51 · 18871 阅读 · 2 评论 -
存储过程Append 二进制 _ParameterPtr“不正常地定义参数对象。提供了不一致或不完整的信息”
使用ado调用存储过程,其中一个参数为image类型,当插入的二进制长度为空时,出现“不正常地定义参数对象。提供了不一致或不完整的信息”错误。代码如下SAFEARRAY *psa;SAFEARRAYBOUND rgsabound[1];rgsabound[0].cElements = size;rgsabound[0].lLbound = 0;psa = SafeArrayCrea原创 2013-01-20 11:56:30 · 3223 阅读 · 1 评论 -
SP_EXECUTESQL 输出参数
use pubsgodeclare @count intdeclare @sql nvarchar(4000)set @sql='select @count=count(*) from titles'exec sp_executesql @sql,N'@count int output',@count output --请注意字符串前一定要加Nselect @count转载 2013-01-06 10:05:00 · 2026 阅读 · 0 评论 -
ado执行sql查询出现“发送数据流时出现算术溢出”错误
开发一个数据采集监控系统,比较变态的是有将近2000项数据。根据数据类型分多个表存储。数据库访问层采用ado。最近发现当一条sql一次性查询1700多个字段数据后就出现“发送数据流时出现算术溢出”错误。原创 2013-08-16 15:56:56 · 2548 阅读 · 0 评论