1. 在sql Server 2008 R2中SSIS怎麼傳表名變數
一、SSIS變數簡介
SSIS(SQL Server Integration Services,SQL Server整合服務)變數分寬察局分為兩種,一種是系統變數,一種用戶定義的變數。系統變數包括有關包、容沒畝器、任務或事件處理程序的非常有用的信息。例如,在運行時,MachineName系統變數包含運行包含的計算機的名稱,StartTime變數包開始運行的時間。系統變數是只讀的。在SSIS中,用戶變數是用戶在開發的過程中根據需要申明的變數。用戶變數可以使用在腳本中,在由優先約束、For循環容器、派生列轉換和條件性拆分轉換使用的表達式中,以及在更新屬性值的屬性表達式中。
在各種編程語言中申明的變數一般情況下都會有作用范圍的,SSIS變數也不例外,SSIS變數也是有作用范圍的。根據作用范圍分類,變數分為包變數和組件變數。包變數在包任何一個組件中都可以調用,組件變數只能夠在聲明變數的組件中有效。在變數的窗口中可以看到變數的作用域。
可以看到i變數的作用域是整個Package1包,而myconfig變數作用域是數據流任務組件。
二、SSIS用戶變數的聲明、賦值、使用
1、申明變數
申明變數是非常簡單、如果你要申明包變數,只要單擊控制流選項卡,然後在包開發區域空白處單擊右鍵選擇變數命令,或者新建變數按鈕就新建一個變數,輸入名稱,選擇數據類型,賦初值就完成了。
如果要聲明某數據流任務組件使用的變數,只要雙擊該數據流任務組件,在流控制控制選項卡空白的地方單擊右鍵選擇變數命名,在變數窗口中新建一個變數命令,在變數窗口中新建一個變數,這時變數的作用域就是你選擇的流任務組件。
2、賦值
在實際開發中,除了在變數聲明的時候給變數賦值外,還有兩種方式,一種是通過執行SQL任務組件返回值的方式給變數賦值,一種是通過腳本組件來給變數賦值。
在執行SQL任務組件方法是先設置好組件的資料庫連接屬性,然後輸入從資料庫取數據的SQL語句,設置組件返回的結果集為單行。在結果集界面中單擊「新建」,在結果集那一列輸入你剛才SQL返回列的名稱,在變數名稱列選擇你要賦值的變數
圖中紅色方框中的SQL語句非常簡單,返回單行,結果是1。在圖4中,將返回的result列的一行賦值給用戶變數i。
利用腳本組件賦值變數比較簡單,只需要設置腳本組件的ReadOnlyvariable或者ReadWriteVariable,將變數的名稱設置他們的值(多個變數以逗號分割),它們的區別是前者在腳本組件只能夠讀,或者可以讀寫。然後在腳本組件中通過
Dts.Varables("變數名稱").Value=值
3、變數的使用
變數在ssis中使用的地方很多,筆者介紹兩個典型的應用。
(1) 執行 SQL 任務組件的參數
假定申明了一個日期類型變數StartDate,用戶需要通過從某個表中選擇在StartDate日期之前的數據,這個時候需要將StartDate作為參數傳給執行 SQL 任務組件。在執行 SQL 任務組件輸入SQL的地方輸入慎讓如下命令語句:
SELECT * FROM TABLE_a WHERE 日期欄位 < ?
然後在參數據映射界面新增映射,在變數名稱列選擇用戶變數StartDate,選擇類型為DATE,在參數名稱列輸入給參數取的名稱。這樣就可以將StartDate變數傳給SQL任務組件的SQL語句了。
(2) 在腳本組件中賦值
可以在腳本組件中通過Dts.Variables("i").Value = 1方式賦值給變數,也可以通過這種方式來使用變數。比如Dts.Variables("other_variable").Value = Dts.Variables("i").Value+1,這個語句是可以在腳本組件中執行的,將i變數加1後賦值給另外一個變數。
2. SQL SERVER中變數聲明的命令是什麼
declare @變數名 類型
比如給你寫個例子,declare的那些都是生明變數,set是給變數賦值
declare @a int
declare @b int
declare @c int
declare @d int
declare @str int
set @str=0
while @str<=9999
begin
set @a=cast(substring(right('+cast(cast(@str as varchar) as varchar),4),1,1) as int)
set @b=cast(substring(right('+cast(cast(@str as varchar) as varchar),4),2,1) as int)
set @c=cast(substring(right('+cast(cast(@str as varchar) as varchar),4),3,1) as int)
set @d=cast(substring(right('+cast(cast(@str as varchar) as varchar),4),4,1) as int)
if (@a*7+@b*9+@c*10+@d*5+222)%11=3
begin
print ('a='+cast(@a as varchar)+' b='+cast(@b as varchar)+' c='+cast(@c as varchar)+' d='+cast(@d as varchar))
end
set @str=@str+1
end
3. access 2003怎樣執行SQL語句
你指的是程序裡面還是直接在access資料庫中?
程序中:
select * from TbName
update TbName set col1=col1Value where ID=1
delete * from tbName where id=1
insert into tbName(col1,col2) values(col1value,col2value)
access資料庫中
新建一個查詢,然後根據需要使用上面列出的語句。註:僅可以執行一條語句。