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

2021-07-08 21:28:57 字數 2495 閱讀 5706

1樓:

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

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

declare 變數名 型別

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

declare @count int

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

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

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

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

2樓:匿名使用者

儲存過程的引數有兩種 一種是傳承引數 就比如這樣: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 只能這樣說下

3樓:

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

在儲存過程中使用引數什麼時候要用declare宣告,什麼情況下不要,麻煩高手指點一下,謝謝!!

4樓:匿名使用者

傳入的引數不要declare

過程內部的本地變數要declare

oracle 定義儲存過程時,什麼時候需要使用declare? 可以不用它嗎 請不要隨便複製貼上,請舉例說

5樓:匿名使用者

oracle 的儲存過程裡沒有declare的語法,觸發器和plsql塊才是declare

如果要定義變數,後面直接跟is的

create or replace procedure c(***)ispara number;

begin

end;

6樓:匿名使用者

你在寫儲存過程的時候是

create or replace p_name is變數定義

begin

.....

end p_name;

之後一編譯就成了儲存過程,並儲存在資料庫中;

但是如果僅僅是除錯用,在sqlplus中或是在pl/sql developer的sql視窗、命令視窗自己隨便寫一段**以完成某項操作,那麼就是

declare

變數定義

begin

......

end;

7樓:匿名使用者

儲存過程裡沒有declare吧,這個是在plsql塊裡,並且需要定義變數時才用到

declare

變數定義;

begin

end;

---過程

create or replace procedure 過程名(v_date in varchar2, result out integer) is

變數定義;

begin

end ;

sql中什麼時候要用declare宣告變數?

8樓:匿名使用者

像這種問題,基本

來上沒有為啥...

淺顯點源:就是 人家開發sql server的時候,為了更加讓編譯器更加方便的識別使用者輸入的**.

就規定,如果是定義變數 那麼 必須要使用 declare 關鍵字.

那編譯器就很容易的知道. declare 空格後面的第一個字串就是變數名了.

怎樣sql儲存過程中執行動態sql語句

有時需要在oracle 儲存過程中執行動態sql 語句 例如表名是動態的,或字段是動態的,或查詢命令是動態的,可用下面的方法 set serveroutput ondeclaren number sql stmt varchar2 50 t varchar2 20 beginexecute imme...

在環境質量報告書編制過程中,如何使用GB進

1 根據當地復環保局的雜訊區制 域劃分規定,bai確定功能du區和雜訊標準zhi值,以及雜訊敏感區域dao 2 根據雜訊源的雜訊數值推算 敏感區域的貢獻值 3 由 值和標準值之差確定是否超標及超標數額 4 按超標數額確定對雜訊源的控制措施。根據 聲環境質量標準 gb3096 2008要求,學校聲環境...

在使用老化房過程中,應注意哪些事項

1.使用老化房前檢查電壓是否正確,請使用機台上所標示之電壓,避免電 專過量,而發生火災屬。2.馬達執行方向是否正常,若老化房出風口有氣體排出則為正常。只適用於三相電壓380v的機型 3.當老化房的顯示溫度與實際溫度 由標準溫度計測出 差異甚大時,不可隨意調整線路板之零件及內部引數,應通知本公司派工作...