http://www.dotblogs.com.tw/dc690216/archive/2010/02/02/13440.aspx
暫存表(Temporary Tables)的使用簡介
http://cbw0731.pixnet.net/blog/post/24993864
暫存表(Temporary Tables)
CREATE TABLE #Yaks ( YakID int, YakName char(30) )
- table name 前加入”#”, 表示這是一個暫存表(temporary table)
- 當session 關閉時, 這個table 將會自動drop
- 好的寫作習慣, 應在暫存表使用完畢後, 下指令去 drop, 而不是讓系統自動回收
- 暫存表是存在主機記憶體中, 因此存取速度較快
- 暫存 table 的限制:
- 暫存表存在於”tempdb”這個database 裡
- 如果有兩個使用者建立同一個名字的暫存表, 則他們會各自擁有獨立的一份, 互相不會干擾.
- 若stored procedure A 建立了一個暫存表, 並呼叫 stored procedure B, 則在 B 中可以存取這個暫存表
- 如果在SQL Server Management Studio or Query Analyzer 中建立的暫存表, 會等到我們手動drop 去關閉session 才會消失
表格變數(Table Variables)
當我們使用 SQL Server 2000 或以後的版本, 則可以考慮使用 “Table Variables” (表格變數); 使用方式如下例:
DECLARE @TibetanYaks TABLE (
YakID int,
YakName char(30) )
INSERT INTO @TibetanYaks (YakID, YakName)
SELECT YakID, YakName
FROM dbo.Yaks
WHERE YakType = ‘Tibetan’
— Do some stuff with the table
- 它和暫存表類似, 但它更加彈性, 且不會存在於tempdb 中(完全存在於記憶體).
- 使用完畢後, 不須手動去 drop它
兩者的使用時機
- 當暫存的資料筆數小於100筆時, 使用表格變數, 否則, 可使用暫存表, 因為針對表格變數, SQL Server 不會去解析/最佳化它的效能.
- 當我們須要對表格建立索引(Index)時, 則必須使用暫存表.
- 在使用暫存表時, 最好能在建立後一併建立索引, 這能增加效能 (SQL Server 2005後, 這方面已改善, 所以可以不建索引; 但建立它仍是一個好習慣)
全域暫存表(Global Temporary Tables)
在表格名字前面, 加入兩個”#”, 比如”##YakHerders”, 則表示這是個全域暫存表, 也就是說, 這個表格和一般表格一樣, 可以被所有連線(connections/sessions)使用; 在SQL Server 中, 這樣的應用並不多見.
[轉貼]SQL SERVER–cursor 簡單範例
http://pgtalk.blogspot.com/2007/11/sql-server-cursor.html
USE [testDB]
GO
/****** 物件: StoredProcedure [dbo].[pavo_CalculateRecordSum] 指令碼日期: 11/15/2007 11:55:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_cursor_Test]
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
SET NOCOUNT ON;
DECLARE Cur Cursor FOR
SELECT a,b,c
FROM Table_A
–開啟cursor
Open Cur
–定義cursor裡要取出的物件
DECLARE @a int,@b nvarchar(50), @c DATETIME
–進入cursor
Fetch NEXT FROM Cur INTO @a, @b,@c
print @@FETCH_STATUS;
While (@@FETCH_STATUS <> -1)
BEGIN
–在此加入LOOP中的內容
————————
–再到下個指標去
Fetch NEXT FROM Cur INTO @a, @b,@c
END
–關閉cursor
CLOSE Cur
–釋放cursor
DEALLOCATE Cur
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
–印出錯誤訊息
PRINT ERROR_NUMBER();
PRINT ERROR_MESSAGE();
ROLLBACK TRANSACTION;
–關閉cursor
CLOSE Cur
–釋放cursor
DEALLOCATE Cur
END CATCH;
END
把WEB APP的專案改為WEB SITE
好久沒遇到.NET程式方面的問題了,有種老朋友你終於回來的感覺,哈哈!!
這次遇到的CASE是:
委外開發.NET 2.0 WEB專案,但由於客戶端的環境是不需編譯的,即採用WEB SITE的專案,
但委外新開發的專案卻是使用WEB APP,以至於不能執行,
在不動到原架購的改法如下:
- 把<%@ Page Language=”C#” AutoEventWireup=”true” CodeBehind=”Default.aspx.cs” Inherits=”_Default” %>改為
<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>
以此類推…
- 把FUNCION類的程式,放到App_code中
這樣就可不需DLL而能執行。
(此即為.NET 2.0提供的功能叫Precompiled Web Site)
補充:CodeBehind是1.1時的作法,而CodeFile是2.0開始的作法,也叫CodeBeside
參考文章:
單眼皮女孩 之三:誤會
真是誤會一場呀!!
等了這麼多天,心急的我寫了封MAIL給她,寫上我對他的感覺.
伸也一刀,縮也一刀,就來個爽快吧!!
兩天後的晚上,正在看日劇的我接到了通不認識的電話,
劈頭第一句「你在找我喔!!」
沒想太多,直覺這是有問題電話,直接掛掉,
此刻才驚覺這會不會是小沂的電話? (編按….反應會不會太慢了點)
電話又再度響起,
「我是小沂啦!!」
「我知!!」我忙著解釋為何掛掉電話,
「不好意思!!」
「因為之前接了太多莫名叫我張大哥的電話,所以才會這樣」
「都怪情色電話太氾濫了」所以….
(責任全推給其他人,哈!!)
回歸主題,小沂解釋了之前為什麼不給我電話,也沒有打電話給我的原因,
「不是不可以,只是不是現在」~這麼玄的話,我現在還是很難理解
只因為我當時沒有向她要電話,她感覺事後再要電話,是沒誠意嗎?
認為勉強來的會浪費我的時間.
「小姐,妳想太多了啦!!」
「只因為找不到時機和你要電話而已」我說,
「就要牽機車的時候呀!! 你沒有拿安全帽」
「害我還以為這次就沒了」小沂說,
「什麼…..」狀況外的我,
「我還想說你不錯,要把你介紹給我堂姐」
(嗯….我想我應該知道你說的堂姐是哪位)
「或許你不喜歡我這種小妹妹型的」
「喜歡能照顧你的那一型?」她猜,
「妳就很好了」我說,
之後又哈啦了說了一堆….
「真的不是她不回啦!! 只是最近剛好很忙」等等的話
此時高興的溢於言表,第一步總算成功了.
小沂以為我對他沒意思,而我也以為她對我沒意思…..
單就這一點來說,我們還真有默契.
「你人很好」
「我也覺得妳不錯」
那就成了,好男人+好女人剛好湊成一對.
待續~~
你很好,但是很無聊
在女性友人印象中的我好像就是如此,
至少每每得到的答案九成都和「你人很好」這句話有關.
無奈!! 原來我只有好人卡可以收…
在這世道,好人並不吃香,要受歡迎至少要會做人,最少也要懂的說好聽話,
而這正是我最缺乏的能力.
使用 PIVOT 和 UNPIVOT
http://technet.microsoft.com/zh-tw/library/ms177410.aspx
DROP TABLE #pvt
CREATE TABLE #pvt (VendorID varchar(10), Emp1 int);
GO
INSERT INTO #pvt VALUES ('A121',4121);
INSERT INTO #pvt VALUES ('A121',4345);
INSERT INTO #pvt VALUES ('A121',4454);
INSERT INTO #pvt VALUES ('A122',1234);
INSERT INTO #pvt VALUES ('A122',1121);
INSERT INTO #pvt VALUES ('A123',5232);
select * from #pvt
SELECT *
FROM
(SELECT VendorID,Emp1
,ROW_NUMBER() OVER(partition by VendorID order by VendorID) RID
FROM #pvt) p
PIVOT
(
MAX(Emp1)
FOR RID IN --用RID對應要塞入的欄位
( [1], [2], [3])
) AS pvt1
輸出結果:
