sqlserver 临时表 游标 存储过程拼sql 日期函数等

sqlserver 临时表 游标 存储过程拼sql 日期函数等,第1张

概述1、 创建临时表        方法一:      create table #临时表名(字段1 约束条件,                       字段2 约束条件,                   .....)         create table ##临时表名(字段1 约束条件,                           字段2 约束条件,               

1、

创建临时表
       方法一:
     create table #临时表名(字段1 约束条件,
                      字段2 约束条件,
                  .....)
        create table ##临时表名(字段1 约束条件,
                          字段2 约束条件,
                      .....)
        方法二:
     select * into #临时表名 from 你的表;
       select * into ##临时表名 from 你的表;
注:以上的#代表局部临时表,##代表全局临时表

例如:create table #tblrefundPaperPassengernames
  (
   refundApplicationID int,
   passengernames varchar(500)
  )


查询临时表
     select * from #临时表名;
       select * from ##临时表名;

删除临时表
     drop table #临时表名;
       drop table ##临时表名;

 

2、游标的定义及使用

declare @curname cursor;

declare @name int;//定义游标就得定义一个盛放游标内容的容器,数据类型相同

set @curname =Cursor for select X from #table

open @curname

Fetch Next from  @curname  Into @name

While @@fetch_status =0

begin

  ************;

  Fetch Next from @curname Into @name

end

Close @curname ;

Deallocate @curname ;

 

 

3、

存储过程里判断一个参数和一个字段的关系时 必须select语句得有括号,例如

     IF @Price<= (SELECT MIN(MarkupPrice) FROM IOrderPriceList)   


4.在存储过程里,动态的拼SQL语句,除了想要返回子结果集,有的时候还需要一些对原结果集的sum,cout之类的
然后赋给out参数 ,传出该值   

declare @sql nvarchar(4000);
declare @SumOperateFee money;
set @sql=' select * from orders where reservationtime > ''2009-7-22'''--简易的sql ,实际中复杂很多
set @sql='select @SumOperateFee=sum(a.pricedue) from ( '+@sql+' ) as a '

EXECUTE sp_executesql
 @sql,
 N'@SumOperateFee money output',
 @SumOperateFee output;

这样 就把exec 执行的结果 赋给变量了 ,而这个变量时out类型的,在c#端可取值,
但我翻了个严重的错误,一个很低级的错误,
在执行SQL语句的时候,提示“过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型”,弄了半天弄的一头雾水,
结果Google了一下,才知道,它指的是这个@sql的类型,而我竟然定义的是varchar  ,悔呀,浪费了好多时间

 

5、在sql中执行存储过程的写法

exec  IOrderAddPriceRule_GetAddPrice  'CGQ','SFO','FM','2009-7-15'   SPname后面直接跟参数,不需要参数名=参数值这样的形式

 

6.declare @msg nvarchar(100);

set @msg='''gda'''+','+'''ab''';

select * from t_a where a.col1 in (@msg);

本来想用@msg拼接出in里面的参数 ,如 in ('gda','ab')  可是用变量代替的话 却总是出错,还未解决为什么呢

 

7.sqlserver的日期函数,贴上备用

getdate()  dateadd(day,2,'2004-10-15')  datediff(day,'2004-09-01','2004-09-18'day(),month(),year()

DATEPART(month,'2004-10-15') 

.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7) 

datename 返回代表指定日期的指定日期部分的字符串

datename(weekday,'2004-10-15')      --返回:星期五

select 本年第多少周=datename(week,'2004-10-15')
,今天是周几=datename(weekday,'2004-10-15')

 convert(varchar(10),getdate(),120)  得到的结果为:2010-10-01

提醒:在使用日期函数时,其日期值应在1753年到9999年之间,这是sql Server系统所能识别的日期范

 

8、两个整数相除得到百分比
   Cast(Convert(decimal(10,2),(1.0 *Count(OrderID)/@OrderNum)*100) as varchar(20))+'%' As CancelPercent        ----decimal(10,2) 四舍五入保留两位小数

 

9、写存储过程的时候要注意规范易读性
/*
 功能:添加修改订单合作商,如果存在订单的合作商则修改,否则添加一条新纪录,有出票合作商时要更新订单表的出票合作商
 参数描述:
  @orderID    订单ID
  @ticketIssuedcopartnerID 出票合作商ID
  @delivercopartnerID  配送合作商ID
  @receiptMoneycopartnerID 收款合作商ID
  @ticketIssuedcopartnername 出票合作商名称
  @delivercopartnername  配送合作商名称
  @receiptMoneycopartnername 收款合作商名称
 创建日期:2008-09-12 10 :32  创建人:小倩
*/
CREATE    PROCEDURE [dbo].[Orders_copartner_Update] ..........

10、注册sql缓存依赖

aspnet_regsql -S 192.168.5.211 -U sa -P 123456 -d AirTicket -ed
aspnet_regsql -S 192.168.5.211 -U sa -P 123456 -d AirTicket -t AIrdistance -et

在visual studio 2005 命令提示窗口执行
(表 AspNet_sqlCachetablesForChangeNotification 自动建表 )

 

11

今天打开企业管理器-->表-->打开,居然开不到数据,提示“未知错误:7008007E”,还以为是sqlserver出问题了呢,卸了装,装了卸,

*** ,还那个德行,没管用,Google一下,原来缺补丁,补丁下下来了,又她妈不会打,我还真是够笨的,从网上摘了点,增强记忆。

查询分析器:select @@version  结果是:Microsoft sql Server  2000 - 8.00.194 (Intel X86)   Aug  6 2000 00:57:48   copyright (c) 1988-2000 Microsoft Corporation  Enterprise Edition on windows NT 5.2 (Build 3790: Service Pack 2) 总结

以上是内存溢出为你收集整理的sqlserver 临时表 游标 存储过程拼sql 日期函数等全部内容,希望文章能够帮你解决sqlserver 临时表 游标 存储过程拼sql 日期函数等所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)