mikebai.com

  • Home
  • dev
  • DotNET
  • M365
  • 搞笑
  • 杂七杂八
  • FocusDict
個人BLOG
it developer
dev

ECT 与 SET 对变量赋值的区别(存储过程)

SQL Server 中对已经定义的变量赋值的方式用两种,分别是 SET 和 SELECT。对于这两种方式的区别,SQL Server 联机丛书中已经有详细的说明,但很多时候我们并没有注意,其实这两种方式还是有很多差别的。 SQL Server推荐使用 SET 而不是 SELECT 对变量进行赋值。当表达式返回一个值并对一个变量进行赋值时,推荐使用 SET 方法。 下表列出 SET 与 SELECT 的区别。请特别注意红色部分。 set select 同时对多个变量同时赋值 不支持 支持 表达式返回多个值时 出错 将返回的最后一个值赋给变量 表达式未返回值 变量被赋null值 变量保持原值 下面以具体示例来说明问题: create table chinadba1(userid int ,addr varchar(128) )goinsert into chinadba1(userid,addr) values(1,'addr1')insert into chinadba1(userid,addr) values(2,'addr2')insert into chinadba1(userid,addr) values(3,'addr3')go表达式返回多个值时,使用 SET 赋值 declare @addr varchar(128)set @addr = (select addr from chinadba1)/*--出错信息为服务器: 消息 512,级别 16,状态 1,行 2子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。*/go表达式返回多个值时,使用 SELECT 赋值 declare @addr varchar(128)select @addr = addr from chinadba1print @addr --结果集中最后一个 addr 列的值--结果: addr3 go表达式未返回值时,使用 SET 赋值 declare @addr varchar(128)set @addr = '初始值'set @addr = (select addr from chinadba1 where userid = 4 )print @addr --null值 go表达式未返回值时,使用 SELECT 赋值 declare @addr varchar(128)set @addr = '初始值'select @addr = addr from chinadba1 where userid = 4print @addr --保持原值go 需要注意的是,SELECT 也可以将标量子查询的值赋给变量,如果标量子查询不返回值,则变量被置为 null 值。此时与 使用 SET 赋值是完全相同的对标量子查询的概念大家应该都觉得陌生,举个例子就能说明 declare @addr varchar(128)set @addr = '初始值'--select addr from chinadba1 where userid = 4 为标量子查询语句select @addr = (select addr from chinadba1 where userid = 4) print

2010-04-09 0comments 115hotness 0likes mikebai Read all
dev

[原创]SQL2005分页用存储过程

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER PROC [dbo].[Proc_Paging2005]    @SqlAllFields NVARCHAR(MAX) ,--所有字段    @SqlTablesAndWhere NVARCHAR(MAX) ,--from 之后的 order 之前的部分    @OrderFields NVARCHAR(MAX) ,--排序用字段    @PageSize INT ,--每页显示的数量    @PageIndex INT OUTPUT ,--要显示的页码,设置为OUTPUT用于判断请求页码的有效性    @RecordCount INT OUTPUT ,--总记录数    @PageCount INT OUTPUT --总页数AS     DECLARE @sql NVARCHAR(MAX)    SET @sql = 'SELECT @RecordCount = count(*) from ' + @SqlTablesAndWhere ;    EXEC sp_executesql @sql, N'@RecordCount int output', @RecordCount OUTPUT ;  --获得总页数    IF @RecordCount % @PageSize = 0         SET @PageCount = @RecordCount / @PageSize ;    ELSE         SET @PageCount = @RecordCount / @PageSize + 1 ;          --判断当前页码    SET @PageIndex = ISNULL(@PageIndex, 1) ;    IF @PageIndex > @PageCount         SET @PageIndex = @PageCount ;    IF @PageIndex < 1         SET @PageIndex = 1 ;     DECLARE @start_row_num AS INT ;    DECLARE @end_row_num AS INT ;    SET @start_row_num = ( ( @PageIndex - 1 ) * @PageSize ) + 1 ;    SET @end_row_num = ( @start_row_num + @PageSize ) - 1 ;     SET @sql = 'select * from (select row_number() over (' + @OrderFields        + ') as RowNumber,' + @SqlAllFields + ' from ' + @SqlTablesAndWhere        + ') as temptable where RowNumber between ' + STR(@start_row_num)        + ' and ' + STR(@end_row_num)     EXECUTE(@sql)    

2010-04-08 0comments 139hotness 0likes mikebai Read all
dev

获取影响行数和ID的存储过程

方法一:  1DECLARE @SQL NVARCHAR(256) 2DECLARE @ReturnID INT 3 4SET @SQL = 'SELECT [InfoID] FROM TM_TeachInfo WHERE [CourseID]=1 and [infosort]=1' 5 6EXEC(@SQL) 7 8SELECT @ReturnID = @@Rowcount

2010-04-08 0comments 108hotness 0likes mikebai Read all
杂七杂八

[转载]我的WIFI总动员,我的WIFI生活!巅峰之作!震撼你的眼球!

一,没有无线路由器,让电脑WIFI共享给手机上网。 环境和设备:家里一台式电脑,ADSL拨号直连上网,电脑上插有一张USB无线网卡。当然笔记本也行,笔记本上也有无线网卡! 现在开始说手机WIFI连接电脑共享上网的一些大致设置: 在电脑的网络连接里找到拨号上网的连接,右键--属性--高级,在“Internet连接共享”里,家庭网络连接里选上自己的无线网卡连接,如图。 下载 (102.63 KB) 2009-2-21 16:35  系统会默认把无线网卡的IP设为“192.168.0.1”,如果不同的话,也克手动设置无线网卡的IP,如图 下载 (91.6 KB) 2009-2-21 16:35现在轮到手机上的设置了,在WIFI里新建一个连接,网络名称随便你,下面的“这是设备至设备的连接”一定要选上。下一步,身份验证公开,数据加密的话,看自己的情况,我是不用密码的哦。然后就完成了连接的建立了 下载 (33.61 KB) 2009-2-21 16:35

2010-04-01 0comments 122hotness 0likes mikebai Read all
杂七杂八

手工设置ppc字体,几百种字体随便挑

ppc的字体可以自己随意替换。即可以从网上寻找cab的安装包(如常见的雅黑安装包),也可以完全手工设置(这样可以完全自主的设置字体、字号)。ppc使用的字体文件与windows使用的字体完全相同,从pc上的 C:\WINDOWS\Fonts 找到需要的字体,直接可以使用,几百种字体随便挑,不必局限于雅黑。下面以雅黑字体为例,介绍手工设置ppc字体的方法。涉及到修改注册表,建议事先备份。以下内容转贴自 http://club.joyes.com/announce/a ... 00&BoardID=5037方法如下:1.先下雅黑字体2.再把雅黑拷贝到windows\Fonts里3.在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\]下创建FontPath键  并创建字符串"FontPath"=(内容是)"Windows\Fonts"4.在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]下修改这些内容:"Tahoma"="Windows\Fonts\MSYH.TTF,微软雅黑""Courier New"="Windows\Fonts\MSYH.TTF,微软雅黑""Kingsoft Phonetic Plain"="Windows\Fonts\MSYH.TTF,微软雅黑""SC_Song"="Windows\Fonts\MSYH.TTF,微软雅黑""宋体"="Windows\Fonts\MSYH.TTF,微软雅黑"5.检查"HKEY_LOCAL_MACHINE\system\stroagemanager\autoload\psmfsd"下,是否有"LoadFlags"这个值,并使其内容为"1";修改"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell"路径下的"NoClearType"和" HKEY_LOCAL_MACHINE\SYSTEM\GDI\Cleartypesettings"下的"offonrotation",使其均为"0 ",打开被MS隐藏的ClearType选项6.在到这里添加一些内容[HKEY_LOCAL_MACHINE\System\GDI\V1\FontAlias]arial:-14=TAHOMA:-12ms sans serif:-11=tahoma:13ms sans serif:-13=tahoma:-9tahoma:-1=tahoma:13tahoma:-10=tahoma:13tahoma:-11=tahoma:13tahoma:-9=tahoma:12tahoma:16=tahoma:13version=327692(这些便是我抄的CAB版修改的内容  所以CAB的字体才那么好!)7.软起机器,然后进入手机设置~~系统~~屏幕调整内打开ClearType.这样才是完美的雅黑效果如果还有差异的话 请修改[HKEY_LOCAL_MACHINE\System\GWE\Menu\BarFnt]:菜单栏字体CS    0(00000000)HT   900(0X000384)HtInPts    1(0x000001)It   0(00000000)Nm   TahomaWt   400(0x000190)[HKEY_LOCAL_MACHINE\System\GDI\SYSFNT]:系统字体CS    0(00000000)HT   900(0X000384)HtInPts    1(0x000001)It   0(00000000)Nm   TahomaWt   400(0x000190)[HKEY_LOCAL_MACHINE\System\GWE\Menu\PopFnt]:弹出菜单字体CS    0(00000000)HT   900(0X000384)HtInPts    1(0x000001)It   0(00000000)Nm   TahomaWt   400(0x000190)暂没用过PPX和WDA2等界面软件  所以不知道效果和字体差异

2010-04-01 0comments 117hotness 0likes mikebai Read all
DotNET

C#全角半角转换函数

        #region 全角半角转换        /// <summary>        /// 转全角的函数(SBC case)        /// </summary>        /// <param name="input">任意字符串</param>        /// <returns>全角字符串</returns>        ///<remarks>        ///全角空格为12288,半角空格为32        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248        ///</remarks>        public  static string ToSBC(string input)        {            //半角转全角:            char[] c=input.ToCharArray();            for (int i = 0; i < c.Length; i++)            {                if (c[i]==

2010-04-01 0comments 101hotness 0likes mikebai Read all
杂七杂八

WM系统程序与控制面板(设置)中的各项命令参数

WINDOWS目录下的程序 backlight.exe                      电源设置 btftpclient.exe                    蓝牙资源管理器 bubblebreaker.exe             连球游戏 calc.exe                              计算器 calender.exe                      日历 camera.exe                        相机 clearstorage.exe                恢复出厂设置 clock.exe                            时钟 commManager.exe             通讯管理 commuRec.exe                   通讯录 cprog.exe                          电话 CSDtype.exe                     CSD线路设置 cusTSK.exe                        主题设置 cvdsetting.exe                   语音拨号设置 Deviceinfo.exe                   设备信息 dlagent.exe                       下载代理 fexplore.exe                      资源管理器 GCHistory.exe                    通话记录 GIFplayer.exe                    GIF播放器 Gimageview.exe                图片浏览器 GMMSview.exe                  彩信管理器 GOTOne_home.exe           移动之家工具包 GOTOneServ.exe               移动服务 GPRSAuthentication.exe    GPRS设置 GRingView.exe                  铃声管理 Helpdesk.exe                    移动客户服务 IA_Zip.exe                        Zip压缩工具 iexplore.exe                      浏览器 intSHrui.exe                      英特网共享设置 JBLend_AMS.exe               JAVA百宝箱 keyLock.exe                      按键锁 Message.exe                    信息 MicrophoneAGC.exe          麦克风自动增益 Mute.exe                      …

2010-03-31 0comments 115hotness 0likes mikebai Read all
DotNET

解剖JavaScript中的null和undefined

    在JavaScript开发中,被人问到:null与undefined到底有啥区别?     一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。     总所周知:null == undefined     但是:null !== undefined     那么这两者到底有啥区别呢?     请听俺娓娓道来... null     这是一个对象,但是为空。因为是对象,所以 typeof null  返回 'object' 。     null 是 JavaScript 保留关键字。     null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值:     表达式:123 + null    结果值:123     表达式:123 * null    结果值:0 undefined   undefined是全局对象(window)的一个特殊属性,其值是未定义的。但 typeof undefined 返回 'undefined' 。       虽然undefined是有特殊含义的,但它确实是一个属性,而且是全局对象(window)的属性。请看下面的代码:     alert('undefined' in window);   //输出:true      var anObj = {};     alert('undefined' in anObj);    //输出:false 从中可以看出,undefined是window对象的一个属性,但却不是anObj对象的一个属性。   注意:尽管undefined是有特殊含义的属性,但却不是JavaScript的保留关键字。   undefined参与任何数值计算时,其结果一定是NaN。   随便说一下,NaN是全局对象(window)的另一个特殊属性,Infinity也是。这些特殊属性都不是JavaScript的保留关键字! 提高undefined性能   当我们在程序中使用undefined值时,实际上使用的是window对象的undefined属性。   同样,当我们定义一个变量但未赋予其初始值,例如:     var aValue;   这时,JavaScript在所谓的预编译时会将其初始值设置为对window.undefined属性的引用,   于是,当我们将一个变量或值与undefined比较时,实际上是与window对象的undefined属性比较。这个比较过程中,JavaScript会搜索window对象名叫‘undefined'的属性,然后再比较两个操作数的引用指针是否相同。   由于window对象的属性值是非常多的,在每一次与undefined的比较中,搜索window对象的undefined属性都会花费时间。在需要频繁与undefined进行比较的函数中,这可能会是一个性能问题点。因此,在这种情况下,我们可以自行定义一个局部的undefined变量,来加快对undefined的比较速度。例如:     function anyFunc()    {        var undefined;          //自定义局部undefined变量                if(x == undefined)      //作用域上的引用比较                        while(y != undefined)   //作用域上的引用比较            };   其中,定义undefined局部变量时,其初始值会是对window.undefined属性值的引用。新定义的局部undefined变量存在与该函数的作用域上。在随后的比较操作中,JavaScript代码的书写方式没有任何的改变,但比较速度却很快。因为作用域上的变量数量会远远少于window对象的属性,搜索变量的速度会极大提高。   这就是许多前端JS框架为什么常常要自己定义一个局部undefined变量的原因!

2010-03-31 0comments 99hotness 0likes mikebai Read all
DotNET

onchange、onpropertychange、onblur的详细区别

onChange 当对象失去焦点后,如果value发生改变则触发; onpropertychange 只要value改变就触发(限IE) onBlur 失去焦点时触发   onChange 通俗点讲,就是当鼠标焦点改变时,检测当前输入框的值是否变化,如果则触发。onpropertychange 则是不检测鼠标焦点,只要这个框里的值发生变化就触发。onblur   则是当鼠标焦点改变时,就触发,不管值是否变化。 要注意的一个问题是,当用table键移动光标时,鼠标焦点并未发生变化所以onchange不会触发。 form:http://www.yanghengfei.com/show-216-1.html 2) 之前做了个对input框的实时校验,比如只允许输入数字,用户输入的却是字母等,这时候就把用户输入的值变为红色等...或者对textarea文本域剩余可输入字符的提示,就遇到了一个问题,使用onPropertyChange在IE下很好很正常,但是在FF上就么效果鸟~~~ 于是在网上就找到了一个可行性方法~~ Firefox有个oninput事件效果和onPropertyChange一样,所以同时加上oninput和onPropertyChange问题就解决鸟~~~ oo.... <input type="text" oninput="cgColor(this);" onPropertyChange="cgColor(this);" maxlength="4" name="pt_bankou" id="pt_bankou" value="" /> form:http://www.indang.net/?p=328

2010-03-31 0comments 99hotness 0likes mikebai Read all
DotNET

JavaScript slice()、substring()、substr()用法

JavaScript中substr和substring的区别:String.substr(N1,N2) 从指定的位置(N1)截取指定长度(N2)的字符串; String.substring(N1,N2) 从指定的位置(N1)到指定的位置(N2)的字符串; 举个例子: alert("123456789".substr(2,5)) 它显示的是 "34567" alert("123456789".substring(2,5)) 则显示的为 "345" JavaScript中String 对象的slice()、substring()、substr()方法都能提取字符串的一部分,但使用时有所区别。 stringObject.slice(startIndex,endIndex) 返回字符串 stringObject 从 startIndex 开始(包括 startIndex )到 endIndex 结束(不包括 endIndex )为止的所有字符。 1)参数 endIndex 可选,如果没有指定,则默认为字符串的长度 stringObject.length 。【注1】字符串中第一个字符的位置是从【0】开始的,最后一个字符的位置为【stringObject.length-1】,所以slice()方法返回的字符串不包括endIndex位置的字符。   var stringObject = "hello world!";   alert(stringObject.slice(3)); // lo world!    alert(stringObject.slice(3,stringObject.length)); // lo world! 2)startIndex 、endIndex 可以是负数。如果为负,则表示从字符串尾部开始算起。即-1表示字符串最后一个字符。 【注2】合理运用负数可以简化代码   var stringObject = "hello world!";   alert(stringObject.slice(-3));

2010-03-31 0comments 102hotness 0likes mikebai Read all
1…4041424344…62

Recent Posts

  • c# winform适配高dpi
  • com.microsoft.sqlserver.jdbc.SQLServerException “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server建立安全连接
  • java -cp 用法介绍
  • HTML 容器元素
  • MVC的cshtml的介绍

Recent Comments

No comments to show.

COPYRIGHT © 2025 mikebai.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang