sql裡定義引數時用和不用有什麼區別

2021-07-08 21:28:57 字數 2094 閱讀 3235

1樓:

當然有區別了,而且區別很大。

如果寫成

declare name int

會有語法錯誤,錯誤資訊是:

int 不是可以識別的cursor(遊標)選項@加上後面的內容,說明這個是一個引數,如果不加的話,你怎麼用引數呢,比如你本來是想給引數賦值,結果寫成這樣:

select a=column_name from .....

這不成了改列名了嗎,a是表中原來的列名,column_name是查詢結果表中的列名。

要是寫成:

select @a=column_name from ...

這就是給一個引數賦值。當然引數要前面定義好還有就是@@這樣開頭的都是系統定義的一些儲存過程,我們不能定義以@@開頭的引數。

declare @a int,@b nvarcher(10)----定義變數

set @a=54,

set @b='good luck!'

或者用select都可以進行賦值。

2樓:匿名使用者

不用似乎是不行吧。預設的字首,不加@會報語法錯誤。

3樓:

sqlparameter,引數以@開頭

sql中 宣告變數的時候為什麼要加@

4樓:匿名使用者

oracle的和sqlserver的完全不同

所以這個不適合你所用的oracle

sql 儲存過程中 如何使用declare 有的儲存過程宣告瞭,有的沒有宣告。請回答的詳細點。。謝謝

5樓:

如果你把儲存過程看作是批處理語句就好理解多了!

儲存過程只不過是一個帶著名稱的sql批處理語句,如果在整個過程中需要變數時就是可以宣告,但該變數宣告後只能存活在批處理(儲存過程)的執行中,執行完畢後就會消失,這種宣告的格式就是

declare 變數名 型別

其中變數名為了與資料庫中的列名相互區別,所以變數名有一個前置@符號,比如說

declare @count int

就是將變數@count宣告為int型別的,以後可以使用變數@count作為整型變數使用。在這裡可能有一些誤解,有人認為@count是變數名,也有人認為count是變數名,而@只是一個符號,其實不管那一種理解對於宣告變數上來說是不影響的,事實上應該來說@count被稱為變數名較為合適些。

剛才說過,該變數宣告後只存活於批處理或是儲存過程的執行中而已,也就是說是一個區域性變數,其實在sql中還有一種變數是全域性變數的,他們以@@開頭,但目前的sql中還不允許客戶自己的宣告全域性變數,只是系統中存的。比如查詢系統版本,就可以使用select @@version的方式進行檢視的。因為不能夠宣告,所以不與declare一塊使用的情況。

其實在sql中將變數一詞演譯的非常深,還有一類變數就是表名,列名,儲存過程等名稱,這些名稱其實也算是資料庫的全域性變數的,只要表存在,那麼表名一定會存在於master資料庫中的一個表中,列名也是一樣,這一類的變數有一個特殊,都是已經存在的boject的,所以不須要進行宣告,等於是建庫或表時進行了宣告,然後就可以了使用了,這種情況下的變數前邊是沒有@符號提示的。

所以一般情況下,我們只稱@前置的為變數,沒有前置的為資料庫相關變數,而@@是系統變數不須宣告。但只要是在使用@自定義的變數時,就必須選進行宣告,而其他的則不須要。

6樓:匿名使用者

儲存過程的引數有兩種 一種是傳承引數 就比如這樣:alter procedure pro_cc

@a varchar(100)

as 一種是內建引數 eg:declare @i intdeclare @count int

declare @tstr varchar(50)declare @tb table(i varchar(50))不可能沒有宣告 沒宣告會報錯

公司部讓上qq 只能這樣說下

7樓:

declare就是宣告變數的,如果資料庫表中有的欄位就不用宣告瞭,沒有的但是儲存過程中要用到的變數就需要宣告,格式declare @變數名 變數型別 如:declare @uname varchar(10)

硬碟引數 傳輸速率 求解,內部和外部的有什麼區別

內部傳輸速度主要是由尋道時間以及資料儲存密度決定,外部主要是匯流排的速度以及硬碟介面型別決定的,目前的串列埠硬碟要比以前的並口硬碟更快。比較抽像,舉個例子吧 內部傳輸,是指硬碟本身的分割槽之間的資料傳輸,從c盤到d盤等,外部傳輸,是從u盤 行動硬碟這些外設和硬碟之間的資料傳輸。硬碟資料傳輸率 資料傳...

c語言中定義整型變數010和10有什麼區別

0開頭的是八進位制的,後面的數字不應大於等於8,0x開頭的是16進位制的,8進位制和16進位制的只能表示正數。以數字開頭的那就是10進位制的啦。010 和 10 只能是常量而不能是變數,無法被定義。c語言中,以數字0開頭,由0 7組成的數是八進位制數字。肯定是有區別的啦,自己上機除錯一下就知道了.別...

國際快遞中IE和IP的定義是什麼?有什麼區別?其優勢各為

你這個是國際快遞之中聯邦快遞,也就是fedex的兩個渠道,ip呢就是不用排隊交貨,直接上飛機,時效這塊比較塊,比方說發義大利,走ip渠道是3 4天就到了。這塊稍微貴點。ie呢,就是呢要等某一架飛機裝滿了才會起飛,或者說有個中轉點,比方說直達澳大利亞,有可能中途會在新加坡停留一下。時效這塊呢會慢點。走...