sql 简单游标
在存储过程或触发器中使用 Transact-SQL 游标的典型过程为:
声明 Transact-SQL 变量包含游标返回的数据。为每个结果集列声明一个变量。声明足够大的变量来保存列返回的值,并声明变量的类型为可从列数据类型隐式转换得到的数据类型。
使用 DECLARE CURSOR 语句将 Transact-SQL 游标与 SELECT 语句相关联。另外,DECLARE CURSOR 语句还定义游标的特性,例如游标名称以及游标是只读还是只进。
使用 OPEN 语句执行 SELECT 语句并填充游标。
使用 FETCH INTO 语句提取单个行,并将每列中的数据移至指定的变量中。然后,其他 Transact-SQL 语句可以引用那些变量来访问提取的数据值。Transact-SQL 游标不支持提取行块。
使用 CLOSE 语句结束游标的使用。关闭游标可以释放某些资源,例如游标结果集及其对当前行的锁定,但如果重新发出一个 OPEN 语句,则该游标结构仍可用于处理。由于游标仍然存在,此时还不能重新使用该游标的名称。DEALLOCATE 语句则完全释放分配给游标的资源,包括游标名称。释放游标后,必须使用 DECLARE 语句来重新生成游标。
摘自:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/udb9/html/a5f0904e-0171-44fa-b516-14c6dc91ccd0.htm
declare @value1 varchar(20);
declare @value2 varchar(20);
declare cursor_demo cursor for
select t1.id,t2.id from t1 left join t2 on t1.id=t2.id
open cursor_demo
FETCH NEXT from cursor_demo INTO @value1, @value2
WHILE @@FETCH_STATUS = 0
BEGIN
if(@value1=@value2)
begin
update t1 set [name]='goodtobad' where id=@value1
end
FETCH NEXT from cursor_demo INTO @value1, @value2
END
CLOSE cursor_demo
DEALLOCATE cursor_demo
GO
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
转自:http://jianghaifeng.blogchina.com/3841741.html
SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实、最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下。
通过优化SQL语句提高查询性能的关键是:
根据实际需求情况,建立合适的索引;
......
方法一:
DB1 tb1
DB2 tb2
选择DB1 到表的列表那里
选择tb1表 右键 所有任务 数据导出
下一步 选择你要导出的数据库DB1 下一步 选择你要导入的数据库DB2
下一步 选择你要导的表(前面画勾)tb1, 后面对应的是新数据库的表名tb2(默认是相同表名,可修改) 下一步 完了 ......
CREATE FUNCTION dbo.UF_GetInvoiceSerials( @bizCode VARCHAR(10))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @ret AS VARCHAR(1000)
SELECT @ret=Coalesce(@ret + ', ','') +
CASE e.ID
  ......