网站首页 > 网管员之家 > 当前主题    站内搜索    首页  上一页  下一页  尾页  页次1/1         新用户申请  老用户登录  返回首页
作者信息   主题: 存储过程与Transact SQL语言学习18370

白瑞德


发表主题: 2957
发表回复: 4616
网站暂行积分: 13487


【人类幸存者】



  发表时间: 2010-6-14 15:38:51             

特别提示:本帖子在 2011-1-18 9:25:04 由用户 白瑞德 编辑过

【1.18】
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

    有关SQL Server 2000的text属性字段,有时通过企业管理器中的表查询的时候可能看不到内容,不知道是怎么回事,这又引出了一个问题,如果要对SQL Server中表的某个字段进行更新操作,那么Transact-SQL应该如何写?这个问题倒不是很难,关键是,如果把某个字段的文本无障碍的读出,然后再修改,写入?
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

【6月14日】
浪漫烛光 www.langmanzg.com

例1:
浪漫烛光 www.langmanzg.com

SELECT @C_MC_UID='ZYKH'+RIGHT(CONVERT(VARCHAR(4),YEAR(GETDATE())),2)+REPLICATE('0',2-LEN(MONTH(GETDATE())))+CONVERT(VARCHAR(2),MONTH(GETDATE()))+REPLICATE('0',2-LEN(DAY(GETDATE())))+CONVERT(VARCHAR(2),DAY(GETDATE()))+'01'
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

给变量赋值要用SELECT 变量=变量值,注意变量前面要有@(全局变量为@@)
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

【6月17日】
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

1,以日期编号为主的系统流水号可以用一种较为简单的方式生,C+6P&%c']| 成,比如说:
浪漫烛光 www.langmanzg.com

SELECT @C_MC_UID='ZYKH'+CONVERT(VARCHAR(8),GETDATE(),112)+'01'
浪漫烛光 www.langmanzg.com

后面的112表示日期时间类型的转换形式,这点可以查表。
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

2,注意Transact-SQL语句赋值的问题,无论是何种变量赋值前均应加SELECT或者SET,这点毋庸置疑。另外,要明白SQL语句的返回结果和赋值的关系,比如说:
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

SELECT top 1 C_MC_UID  From Ms_MajCustomer Where DATEDIFF(DAY, C_MC_Addtime,GETDATE())=0 order by C_MC_UID DESC
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

它返回的值只有一个字段(C_MC_UID)的一项,显然可以作为结果赋值给变量使@aaa等于上面的SQL语句生成的值。即:
浪漫烛光 www.langmanzg.com

SELECT @aaa=(SELECT top 1 C_MC_UID  From Ms_MajCustomer Where DATEDIFF(DAY, C_MC_Addtime,GETDATE())=0 order by C_MC_UID DESC)
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

当然,此zD'!7o%apf 0dg时返回的只有一个变量的值,那么用SET作为赋值标识符也可。
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

【6月28日】
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

1,关于SQL Server中的日期时间类型,无论是datetime还是smalldatetime,即使是我们在存储字段的值时只存储日期,比如说2010-6-28,但是如果在C#中调用,显示在DataBound中的却是 2010-6-28 0:00:00,这个问题似乎难以解决,不过今天查询了一下,可以通过CONVERT函数比较方便的解决。
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

比如说,我们在类似Gridview的数据控件(无论是基类还是自定义的,像OA中Exp模块采用的貌似就是以GridView为基类的派生类PagingList),这样带来的问题是,如果它没有合适的程序接口,那么我是无法在.net程序中修改显示格式的,因此只能从存储过程(SP)的设计中入手。在这一次中,我在那个PagingList所调用的存储过程中,在一个Leftjoin的查询SQL中,将原来的日期时间字段更改成这样:
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

CONVERT(VARCHAR(10),InvTime,120) as InvTime1
浪漫烛光 www.langmanzg.com


浪漫烛光 www.langmanzg.com

尽管原来的InvTime的类型是日期时 Sy(Y z`/EFBN**t间,但是在这里用CONVERT进行转换并不会出现错误(至于为什么,应该学习下),定义一个临时字段(InvTime1),并在ASP.net的对应控件中引用即可。当然,VARCHAR字段的长度定义也是必须的,“120”标记对应的日期格式也是包括时间(小时:分:秒)的,但是如果用字符串的格式进行适当的限制,那么显示的就会只有“年-月-日”。



  每当你几乎快被困难击倒,丧失斗志的时候,你就想想背后还有无数等你倒下捅刀子的SB,就充满了力量。
新用户注册   返回首页
首页  上一页  下一页  尾页  页次1/1   转到第