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

2021-07-08 21:28:56 字數 2495 閱讀 3675

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儲存過程中如何插入使用臨時表

在儲存過程中 是不可以建立臨時表的.建議使用表變數代替臨時表進行操作 或者在儲存過程外面建好臨時表 祝你好運 可以使用如下方法 declare sql varchar 2000 begin set sql select into tmp from student print sql exec sql...

在sql儲存過程中如何宣告變數賦值變數最好有

sql server 儲存過程中怎麼將變數賦值 sql賦值語句 declare test1 int select test1 111 set test1 222 sql函式賦值,假定count 是自定義函式declare test2 int select test2 count from sys.s...

SQL儲存過程中,if判斷語句中有多個判斷條件時,要用括號括 嗎

如果像你這個只是單純的or的話,這兩種寫法應該都可以。可是如果是有and又有or,那麼就需要你先把這個條件的先後分清楚了,這樣的情況,肯定需要括號括清楚每一層。查詢語句的效果 with t tmp as select abcdefg 123456 xyz as f1 select f1,substr...