MSSQL手札一 MSSQL的游标

和oracle的不同,MSSQL中没有隐式游标的说法,也没有%type和%rowtype这样根据数据库字段实时更新变量含义的关键字,MSSQL的游标类似于oracle的显示游标,需要自己去手动关闭,

定义游标之后是在预先定义的变量里面进行游标循环,而不是oracle那样的结果集。如下:

declare nex cursor for select [user_name],[birthdate] from T_user_info
    --在访问游标某行数据的时候需要定义变量,这个变量是和表里面的字段一一对应的
    declare @name nvarchar(50)
    declare @birthdate datetime
    --打开游标
open nex
--通过游标nex循环取变量结果集中的数据
fetch nex into @name,@birthdate
while(@@FETCH_STATUS=0)
begin
    --在这里做一些操作
    print(‘姓名:‘+@name+‘    ‘+‘日期:‘+convert(nvarchar(50),@birthdate))
    --print(convert(nvarchar(50),@birthdate))
    --print(@birthdate)
    --一直进行检索。如果@@FETCH_STATUS是一直为0,表示一直是有数据的就可以一直循环
    fetch nex into @name,@birthdate
end
--读取结束,关闭游标
close nex
--关闭游标之后还要释放游标,oracle没有这个步骤
deallocate nex

这就是一个游标的demo,你可以复制过来之后改变变量,字段,表名,之后做操作就可以了,但是游标对于性能上还是会有一些影响,所以用的时候要合理运用

时间: 2024-12-28 14:40:08

MSSQL手札一 MSSQL的游标的相关文章

MSSQL手札二 MSSQL的触发器

触发器,就是在对表做DML操作的时候,触发一些其他的事件,触发器一般用在check约束更加复杂的约束上面,是一种特殊的存储过程,不可以被主动调用. 语法如下: CREATE TRIGGER trigger_name ON { table | view } --加密,加密之后不可以修改,但是可以调用或者删除,具体怎么解密,网上有超长的一段SQL代码,大家可以百度一下SQL存储过程/触发器解密 [ WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD OF }

MSSQL手札三 MSSQL存储过程

--存储过程完成一段sql代码的封装 create proc trim --参数列表,多个间用逗号分隔 @str varchar(10) as --自定义代码段 declare @str1 varchar(10) set @str1=LTRIM(RTRIM(@str)) print @str1 --使用存储过程 exec trim ' abc ' --'abc' --===带输出参数的存储过程 --求两个数的和 create proc sum1 @num1 int, @num2 int, @re

Nodejs之mssql模块的封装

在nodejs中,mssql模块支持sqlserver数据库操作.今天将mssql模块的某些功能封装为一个类,方便以后调用.封装的功能有执行存储过程,执行查询语句操作等.如果本篇文章对大家有帮助,那就再好不过了! 要使用mssql模块,请先用npm加载到项目中.加载过程:打开cmd命令框,定位到项目的根目录下,输入npm install mssql --save ,然后按回车键就OK! 封装的代码如下: //导入mssql模块 var mssql=require("mssql"); v

获取本机MSSQL保存凭证

本文转自王子博客:http://www.cnblogs.com/killbit/p/4355950.html 首先要感谢哥们对我的指点,多谢. 当我们遇到类似情况下,如何获取保存在MSSQL工具里的凭证呢?  //如果对方连接地址后面加了IP\sqlexpress 连接的时候你也记得加上,不然即使密码正确,也会说登录失败. 通过和哥们讨论研究分析以及查找资料,知道了密码存放的地方: C:\Users\Administrator\AppData\Roaming\Microsoft\Microsof

nodejs:连接数据库SqlServer,mssql模块

现在的数据库越来越多,如mgdb,我比较常用的是mysql,但有一天做项目需要连接SqlServer,就去找了个方法.找了很多无非就mssql模块和node-sqlserver模块,但node-sqlserver好像有很多限制和还要编译,感觉很麻烦,就用了mssql模块.mssql模块还是很简单的,因为,只是想连接SqlServer,所以,并没做太多的的深入,将官方文档上取出最简单的连接部分,有兴趣的人可以继续研究.安装就不说了,直接上代码. 我的SqlServer的名字是john,所以连接是用

php连接微软MSSQL(sql server)完全攻略

http://www.jb51.net/article/98364.htm php连接微软MSSQL(sql server)完全攻略 作者:吵吵 字体:[增加 减小] 类型:转载 时间:2016-11-27我要评论 在研究ezSQL的时候就看到了mssql_connect()等一些php提供的连接MSSQL的函数,本以为php这个开源的风靡世界的编程语言对连接微软的数据应该是不在话下的,但是到真正执行的时候,才发现困难多多 在研究ezSQL的时候就看到了mssql_connect()等一些php

LINUX下使用PHP连接MSSQL的方法

目录[-] 如何安装MSSQL.SO 如何安装PDO_LIB.SO 如何安装PDO_ODBC.SO 作者:Roban lee ([email protected]) LINUX下使用PHP连接MSSQL的方法有很多种,根据不同的环境,可以选择不同的方式,大致方法有以下几种: 使用MSSQL.SO扩展 使用PDO_LIB扩展 使用PDO_ODBC扩展 如何安装MSSQL.SO 1. MSSQL.SO 扩展依赖一个外部包,即 freeTDS, FreeTDS 官网: http://www.freet

php 设置mssql编码 解决乱码问题 mssql_connect charset Utf8

当用mssql存储数据采用 nchar 或 nvarchar  存储时 , 由于nchar 或 nvarcha 不支持 UCS-2 ( 即 SQLServer 不会按照 UTF-8 格式存储) 导致PHP 获取后会出现乱码 具体表现为:  汉字会变成???? 这种 而且没有提供类似 mysql_query("set charset utf8"); 这种方法. 解决方案: 1.直接修改 php.ini文件 ,直接修改 mssql.charset 为 mssql.charset = &qu

FIREDAC连接MSSQL 2000报不能支持连接MSSQL2000及更低版本的解决办法

FIREDAC连接MSSQL 2000的时候会报错,原因是MSSQL CLIENT11或MSSQL CLIENT10客户端驱动程序已经不支持连接MSSQL2000及更低版本的数据库. 解决办法: 设置FDPhysSQLiteDriverLink1的ODBCDriver为“SQL Server”,这样FIREDAC将通过ODBC的方式连接上MSSQL2000数据库.