[MSSQL] SQL Server 線上筆記
| 預存程序和函數的不同 | |||||
| 輸入參數 | 輸出參數(out) | 回傳值 | T-SQL陳述式限制 | 呼叫方法 | |
| Stored Procedure | 可有可無 | 可有可無 | 
					數字、資料集或可以不回傳 不可回傳字串  | 
				可以新刪修實體物件 | 
					[Declare @return_value int] Exec [@return_value=]預存程序名稱 [參數1][,參數2 | ,參數3 out]  | 
			
| Function | 
					 
						沒有時,仍要有()  | 
				沒有out | 
					一定要宣告Returns 回傳型別 一定要回傳數字or字串or資料集  | 
				只能對變數物件做新刪修 | 
					通常使用在Select陳述式 回傳數字or字串的純量值函數: Select dbo.函數名稱(參數) From UserTable Where 欄位=dbo.函數名稱(參數) 回傳資料集的資料表值函數: Select * From dbo.函數名稱(參數)  | 
			
| @@ROWCOUNT和ADO.net ExecuteNonQuery()比較 | |||
| 預設值 | 新刪修 | Select陳述式 | |
| MSSQL的@@ROWCOUNT | 1 | 回傳異動筆數 | 回傳查詢筆數 | 
| ADO.net SqlCommand的ExecuteNonQuery() | X | 回傳異動筆數 | 回傳-1 | 
	
	 
View可以回傳資料集,無輸入參數
呼叫方式類似Function的資料表值函數
從活動監視器(Activity Monitor)中找出Lock
SQL2008R2的XACT_ABORT(XACT中止)預設OFF
但我是那種「一個Transaction中一道異動指令失敗,整個Transaction就要Rollback」那一派,所以XACT_ABORT還是設為ON吧
Table Join圖解
Coding Horror A Visual Explanation of SQL Joins
動態執行SQL字串好文
	動態 SQL 威力展示 (1) - 基本概念
	動態 SQL 威力展示 (2) - “類 ‧ 多維度分析”開發實例
	 
SQL SERVER 20008 主键使用 uniqueidentifier 索引
sql 列转行(UNPIVOT)
		MS SQL日期處理方法 @ 每日的點點滴滴 隨意窩 Xuite日誌
		--取得本週的星期日(假設本週開始日為星期日)
		SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),-1)
		--星期一
		SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)
		--星期二
		SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),1)
		做週曆參考用
SQL 2008 系統安裝錯誤,安裝失敗大集合。 - 混亂,逐漸擴散~- 點部落
SQL 分頁 by mis2000Lab 整理
動態將多筆資料的特定欄位依分隔符號組成字串 by TerryChuang
使用遞迴CTE拆解用特定間隔符號所組成的字串 by TerryChuang
[SQL]將多筆資料中某一列的資料作為一列顯示 by亂馬客
MSDN討論:抓取後面幾筆
[SQL] 於多筆重複資料中取得該重複群組中最新一筆資料、論壇上的應用:查第一筆資料
SQL-CLR 型別對應 (LINQ to SQL)、對應 CLR 參數資料
使用C#連結MS SQL 的程式,本機是否也要安裝SQL SERVER才行?
SQL Server 2005 發生deadlock了,應該如何快速排除?
SQL Server Data Type Mappings (ADO.NET) (SQL Server對應ADO.net型別)
SQL Server 2008 Database Mail 實戰篇
MSDN討論:SqlCommand.Parameter雖很安全 但不太好用
Create Function 若..return table 有BEGIN是否需要 設定@t table 欄位名稱
新增一筆資料,取得新增資料的值:
	CREATE TABLE [zz_test]
	(
	[timestampID] [timestamp] NOT NULL,
	[identityID] [int] IDENTITY NOT NULL,
	[guidID] [uniqueidentifier] NOT NULL,
	[title] [varchar](50) NULL
	primary key (guidID)
	)
	
	Insert into zz_test (title) values ('testData')
	Select @@Identity As newIdentityID
	
	Declare @t table /*儲存結果的變數*/
	(
	 
	[identityID] [int] ,
	[guidID] [uniqueidentifier] ,
	[title] [varchar](50)
	)
	--timestamp類型的資料行無法OUTPUT into
	Insert into zz_test (title)
	OUTPUT inserted.[identityID],inserted.[guidID],inserted.title into @t
	values ('TESTdata')
Select * from @t
請問 cte下是否可以用select @x=col1 from TB 來塞值 (列出跳號)
如何讀取 VARBINARY(BINARY) 資料型態的值(16進制轉成字串)
[SQL SERVER][Maintain]如何降級資料庫 by rico
如何利用「資料庫發行精靈」將新版 SQL 資料庫降級成舊版 by 保哥
T-SQL巢裝迴圈Sample Code:
DECLARE @SysRoleID bigint --最外層要存放資料的變數
DECLARE @SysMenuID bigint --第二層要存放資料的變數
 
--宣告游標
DECLARE cursor1 cursor FOR SELECT ID As SysRoleID FROM SysRole
 
OPEN cursor1
FETCH cursor1 INTO @SysRoleID
WHILE @@fetch_status = 0
BEGIN
     
    DECLARE cursor2 cursor FOR SELECT ID As SysMenuID FROM SysMenus  
    OPEN cursor2
    FETCH cursor2 INTO @SysMenuID
    WHILE @@fetch_status = 0
    BEGIN
        -- 處理資料
		insert into [dbo].[SysRolePermission] (SysRoleID,SysMenuID,IsRead,IsEdit) Values (@SysRoleID,@SysMenuID,'True','True')
        FETCH cursor2 INTO @SysMenuID
    END
    CLOSE cursor2
    DEALLOCATE cursor2
 
    FETCH cursor1 INTO @SysRoleID
END
 
CLOSE cursor1
DEALLOCATE cursor1
 
看某張Table有哪些foreign Key的語法(刪表刪資料很有用 ):SQL DROP TABLE foreign key constraint

