sqlserver 臨時表 遊標 儲存過程拼sql 日期函式等
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',0,'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)相關文章
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- 儲存過程——遊標儲存過程
- SQL server儲存過程函式SQLServer儲存過程函式
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- SQLSERVER儲存過程如何寫帶引數的遊標SQLServer儲存過程
- mysql儲存過程及日期函式實踐MySql儲存過程函式
- sql server 儲存過程中使用變數表,臨時表的分析(續)SQLServer儲存過程變數
- 【MSSQL】sqlserver 各種判斷是否存在(表名、函式、儲存過程.......)SQLServer函式儲存過程
- 儲存過程 函式儲存過程函式
- 儲存過程與儲存函式儲存過程儲存函式
- SQLSERVER儲存過程SQLServer儲存過程
- oracle中取得儲存過程、函式等pl sql原始碼的方法Oracle儲存過程函式SQL原始碼
- MySQL 儲存過程/遊標/事務MySql儲存過程
- PL/SQL 中的儲存過程與函式SQL儲存過程函式
- 【fosoyo】SQL Server儲存過程/函式加/解密SQLServer儲存過程函式解密
- MySql 儲存過程 臨時表 無法插入資料MySql儲存過程
- 儲存過程與函式儲存過程函式
- SQL Server實戰六:T-SQL、遊標、儲存過程的操作SQLServer儲存過程
- Sql Server判斷資料庫、表、儲存過程、函式是否存在SQLServer資料庫儲存過程函式
- Mysql儲存過程中使用多遊標MySql儲存過程
- SQL中儲存過程和函式的區別SQL儲存過程函式
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- SQLServer時間日期函式速查SQLServer函式
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- mySql 儲存過程與函式MySql儲存過程函式
- Sqlserver中的儲存過程SQLServer儲存過程
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- SQL Server的巢狀儲存過程中使用同名的臨時表怪像淺析SQLServer巢狀儲存過程
- 怎樣得到建表(儲存過程,函式等)的DDL指令碼,請看案例儲存過程函式指令碼
- 儲存過程vs.函式QM儲存過程函式
- mysql儲存過程基本函式(轉)MySql儲存過程函式
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- 儲存過程的引數可以使用sql的函式儲存過程SQL函式
- dbms_lob儲存過程導致臨時表空間100%儲存過程
- Oracle儲存過程中定義多個遊標Oracle儲存過程
- SqlServer-儲存過程分頁SQLServer儲存過程