SQL - Transact-SQL
T-SQL Programming Elements
Introducing T-SQL Batches
針對如果有批次執行,就可以在每個 statement 後加上執行GO
不屬於 SQL 的函式,需藉由 SSMS 設定識別命令
Introducing T-SQL Variables
利用 DECLARE
來宣告變數
1 | DECLARE @parameter1 INT = 1; |
或是利用 SET
來賦予變數值
1 | DECLARE @parameter2 NVARCHAR(10); |
也可以用 SELECT
來賦予變數值
1 | DECLARE @paramter3 NVARCHAR(max); |
結合 GO
批次執行可以寫成這樣
1 | DECLARE @parameter1 INT = 1; |
結果會輸出
parameter1 | parameter2 | parameter3 |
---|---|---|
1 | String | 50 |
Working with Synonyms
Synonyms 是對在本機或遠端伺服器上的另外一個資料庫物件設定別名
該物件可以是 table、view、procedure、function
可以利用 CREATE
、ALTER
、DROP
來建立、修改、刪除
範例:
先 CREATE
一個 Procedure,使用資料庫 TSQL2023
1 | CREATE PROC SchemaName1.StoredProcedureName1 |
然後執行,觀察輸出
1 | DECLARE @parameter1 INT = 3, @parameter2 INT = 50; |
切換至其他資料庫 TSQL0706 後,CREATE SYNONYM
,來源是剛剛的資料庫 TSQL2023 裡的 Procedure
1 | CREATE PROC SchemaName.StoredProcedureName1 |
結果會輸出
object、schema_id、name、create_date、modify_date、bas_object_name.. 等等資訊
Controlling Program Flow
Understanding T-SQL Control-of-Flow Language
IF…ELSE
1
2
3
4
5
6
7
8IF OBJECT_ID ('SchemaName.tableName') IS NULL
PRINT 'Object doesn't exit';
ELSE
DROP TABLE SchemaName.tableName;
IF EXISTS (SELECT * FROM SchemaName.tableName WHERE column1 = 1)
SELECT 'column 1 exists!';
ELSE
SELECT 'column 1 not exists';WHILE
WHILE 會搭配 BEGIN END 做使用,也可以搭配BREAK
或CONTINUE
1
2
3
4
5
6
7
8
9
10DECLARE @parameterCnt INT = 1, @parameterName NVARCHAR(20);
WHILE @parameterCnt <= 5
BEGIN
SELECT @parameterName = BOOK_NAME FROM BOOK_DATA
PRINT @parameterName;
SET @parameterCnt += 1;
CONTINUE
PRINT '這裡不會執行到'
END;