❶ 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
❷ 帶有變數sql語句應該怎麼寫
select 後面的輸出欄位,只能是表中欄位、或其它表達式,不能是變數。
將此Select 命令寫在存儲過程中,倒是能實現你的想法:
如:
create proc kkk @field varchar(20)
as
exec('select stu_id ,'+ @field +' from customers')
SQL Server中沒有VFP中那樣的「宏」的概念,只能用上面的辦法來解決!
---------------------------------------------------
樓上的朋友,你根本就沒有理解樓主的意思。
❸ 在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後賦值給另外一個變數。
❹ sql server 中變數的命令是什麼
聲明局部變數語法:
DECLARE @variable_name
DataType
其中
variable_name為局部變數的名稱,DataType為數據類型。
給局部變數賦值有兩種方法:
1、SET
@variable_name=value
2、SELECT
@variable_name=value
兩者的區別:SET賦值語句一般用於賦給變數一個指定的常量,SELECT賦值語句一般用於從表中查詢出數據然後賦給變數。
例如:
DECLARE @count int
SET @count=123
PRINT @count
全局變數:
由於全局變數是系統定義的,我們這里只做舉例。
@@ERROR
最後一個T-SQL錯誤的錯誤號
@@IDENTITY
最後一次插入的標識值
@@LANGUAGE
當前使用的語言名稱
@@MAX_CONNECTIONS
可以創建的同時連接的最大數目
@@SERVERNAME
本地伺服器的名稱
@@VERSION SQL
Server的版本信息
這里是觸發器的寫法:
create trigger updateTest
on test for update
as
begin
declare @id int
declare @tablename
varchar(100)
declare @remark varchar(150)
set @tablename='test'
set
@remark=''
select @id=id from deleted
insert into tb_index
values(@id,@tablename,@remark)
end
create trigger deleteTest on test
for delete
as
begin
declare @id int
declare @tablename
varchar(100)
declare @remark varchar(150)
set @tablename='test'
set
@remark=''
select @id=id from deleted
insert into tb_index
values(@id,@tablename,@remark)
end
create trigger insertTest on test
for insert
as
begin
declare @id int
declare @tablename
varchar(100)
declare @remark varchar(150)
set @tablename='test'
set
@remark=''
select @id=id from inserted
insert into tb_index
values(@id,@tablename,@remark)
end
❺ 如何修改新建好的SSIS包中的SQL語句
這種情況可以做成通用的
所有的執行sql腳本,伺服器信息都存在表裡
設計包的時候只要讀取對應的配置表就可以了
至於修改sql腳本只要到表裡修改就好了
❻ 如何應用SSIS的變數,在SSIS中有幾種方式可以更改變數值
就目前我知道的,SSIS自定義的變數在賦值的時候是可以改變的。你用「執行SQL任務」這個工具可以結果集選項中給變數賦值,也就是改變變數的值。
❼ SSIS OLE DB數據源中用SQL命令訪問模式,卻設不了參數
你圖中的應該選到是SQL 命令吧。這個地方的參數沒用過,用選項中的變數中的SQL 命令,然後把你需要的參數,用變數拼起來
❽ SQLSERVER中變數輸出命令是什麼
--用out就行了,給你一個例子
if object_id('tempdb..##aa') is not null
drop proc ##aa
go
create proc ##aa(@a int output,@b int out) --output既是傳入參數又是傳出參數
as
begin
set @a=@a+100;
set @b=@a+11;
end
go
declare @aa int=10,@bb int=0
execute ##aa @aa output,@bb out
print @aa
print @bb
go
--