Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > SQL备忘-基本控制语句复习及@@ROWCOUNT陷阱纪实
【标  题】:SQL备忘-基本控制语句复习及@@ROWCOUNT陷阱纪实
【关键字】:SQL,ROWCOUNT
【来  源】:http://blog.csdn.net/fbysss/archive/2006/07/08/892750.aspx

SQL备忘-基本控制语句复习及@@ROWCOUNT陷阱纪实

Your Ad Here

作者fbysss
msn:jameslastchina@hotmail.com 
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:SQL语句
       好久不写复杂的sql语句,以至于很多东西都忘记。以至于写出@name="sss"来(应该使用单引号)
还是写日志好,一些小的知识点很快可以查到,所以有机会就赶紧贴上来,顺便给需要的人参考。
下面这段很简单,但是很容易陷入@@rowcount的“想当然”陷阱。
declare
@uid int,
@examid int,
@ugid int,
@name varchar(50),--这里必须指定长度,否则默认为1,比如set @name='sss'会截取为's'
@username varchar(50),
@row_count int--临时变量
set @uid =9008
set @examid = 0
set @ugid=1
set @name='sss'
set @username='sss'
select uid from userinfo where examid=@examid and len(ltrim(rtrim(examid)))>0
--注意这里本来想用一句 select  @uid =  uid from userinfo where examid=@examid and len(ltrim(rtrim(examid)))>0了事,但是那样的话,就算后面没有记录,@@rowcount也变成了1。
set @row_count= @@rowcount
/*if  @@rowcount = 0--这里要千万注意,因为@@rowcount随时可能改变,所以应该使用一个变量来保存记录数
比如下面三句
1.set @row_count= @@rowcount
2.if @@rowcount = 0
3.print @@rowcount
如果1得到的记录数为0,那么print的结果是0
但是,这里也许和想象有点不一样,@@rowcount为0不是因为前面的select语句没有记录,而是因为if @@rowcount=0这句没有对数据行的影响!
这么写很有隐患,应该使用变量来保存结果
*/

print 'debug1:rowcount:'+str(@@rowcount)
if @row_count =0
begin  
       
 print 'debug2:rowcount:'+str(@@rowcount)
 print '建立用户,建立用户组关联'
 select  @uid =  uid from userinfo where examid=@examid and len(ltrim(rtrim(examid)))>0
 insert into userinfo (name,username,examid) values (@name,@username,@examid)  --插入用户表 
 insert into usergroup_rela (uid,ugid) values (@@identity,@ugid) --加入用户组
end
else
begin
        print '用户已经存在,建立用户组关联'
        select uid from usergroup_rela where uid = @uid and ugid=@ugid
        if @@rowcount = 0
 begin  
            insert into usergroup_rela (uid,ugid) values (@@identity,@ugid) --加入用户组
--(@@identity可以得到刚刚insert 进去的id值(由数据库自动生成)

        end
 else             print '用户组关联已经存在'
end    

oracle 权限与角色:【上一篇】
Mysql:用phpmyadmin匯出資料至XLS時中文亂碼7/8:【下一篇】
【相关文章】
  • Ruby on Rails + Mysql 4.1 解决GBK编码问题
  • 关于Nhibernate中的hql与sql的转换问题
  • windows server 2003 中安装sql server 2000遇到的问题,解决!
  • 在Eclipse中使用Hsql的插件
  • 实现SqlServer200数据数据倒入XML文件
  • 用jdbc连接MSQL语句
  • Hibernate 3.2 SQL函数返回类型从Integer变为Long
  • T-SQL学习笔记-程序设计基础-游标
  • Biztalk中使用SQL适配器获取数据并用web服务发布的例子
  • sql server 数据库服务器的负载均衡集群实现方法
  • 【随机文章】
  • [翻译]:Windows Vista的秘密1: 在这里打开命令行
  • ASP.NET高级教程(3.3):对象
  • AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
  • 转 网上看到的java23模式趣解
  • JSP全能管理系统beta 1.0
  • ASP.NET中Cookie编程的基础知识(2)
  • 函数调用约定和堆栈
  • Cisco路由器VOIP 配置解析
  • borland社区聊天的客户端程序 v0.2.16
  • CCNP Certification
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.