sql server的儲存過程的declare函式的使用?誰

2021-07-08 21:28:56 字數 4453 閱讀 4873

1樓:匿名使用者

前面的是引數, 是呼叫這個儲存過程的時候從外部輸入進來的。

declare 是宣告變數。

2樓:匿名使用者

變數是在批處理或過程的主體中用 declare 語句宣告的,並用 set 或 select 語句賦值。遊標變數可使用此語句宣告,並可用於其他與遊標相關的語句。所有變數在宣告後均初始化為 null。

transact-sql 語法約定語法 declare | | } [ ,...n] < table_type_definition > ::= table ( [ ,...

] ) < column_definition > ::= column_name [ collate collation_name ] [ [ default constant_expression ] | identity [ ( seed,increment ) ] ] [ rowguidcol ] [ < column_constraint > ] < column_constraint > ::= < table_constraint > ::

= ( column_name [ ,... ] ) | check ( search_condition ) }

3樓:匿名使用者

declare 就是申明一個變數 declare @s varchar(max)就是申明一個名字為s的varchar(max)型別變數!

4樓:匿名使用者

declare是宣告變數的,它也是一個函式嗎

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)

sql語句中的declare 是什麼意思,具體怎麼用啊

8樓:

是宣告的意思,具體用法是declare @宣告的變數名稱 變數型別

如:declare @intdeclare int

9樓:

是宣告的意思,就是宣告變數的,例如:

declare v_number number(10);

v_char varchar2(20);

這個一般是用在函式和儲存過程中的,sql中不會用到

sql server 儲存過程中怎麼將變數賦值

10樓:

/*sql server 儲存過程中怎麼將變數賦值*/--sql賦值語句

declare @test1 int

select @test1 = 111

set @test1 = 222

--sql函式賦值,假定count()是自定義函式declare @test2 int

select @test2 = count(*) from sys.sysobjects

--sql儲存過程賦值,直接傳參處理(類似c語言中的指標嗎)if object_id('sp_test') is not null drop procedure sp_test

gocreate procedure sp_test(@test int output)

asbegin

select @test = 999

endgo

declare @test3 int

exec sp_test @test3 outputselect @test3

drop procedure sp_testgo

11樓:匿名使用者

暈啊,你這個賦值辦法。。。哈哈哈哈。

select @companycode = comcode from t_company where comid = '000001'

如果是給變

量賦常量

select @companycode = 100 類似

12樓:匿名使用者

不用 into 的例子:

1>2>3> declare

4> @testvalue as varchar(20);

5> begin

6> set @testvalue = 'first test!';

7> print( @testvalue );

8> end;

9> go

first test!

13樓:匿名使用者

zhanghb_3722

怎麼可以複製別人的**來回答呢!當然,大家都是正確的

14樓:匿名使用者

lz 試試這個 把位置換換

select top 1 @引數=column from table where ...

15樓:

select @companycode = comcode from t_company where comid = '000001'

16樓:淳于建設汲媚

儲存過程裡參

數的預設值不能使用函式,所以不能在儲存過程裡直接把引數的預設值設定為當前系統時間,不過可以在儲存過程裡賦值。還有一點疑問,既然@myday是當前系統時間了,為什麼還要做成引數呢?

create

procedure

pro_test

@myday

char(10)

asset

@myday=convert(char(10),getdate(),21)

update

mytable

setstatus=1

where

day>@myday

go@myday不為引數時可以這麼寫

create

procedure

pro_test

asdeclare

@myday

char(10)

set@myday=convert(char(10),getdate(),21)

update

mytable

setstatus=1

where

day>@mydaygo

sqlserver中的儲存過程的日期引數怎麼賦當前日期

執行下面的儲存過程即可 select name create date modify date from sys objects where type p order by modify date desc 如果想找到更多的被修改過的儲存過程 使用者表 自定義函式,觸發器,可以執行下面的sql語句 ...

sql分頁,不用儲存過程,sql 分頁儲存過程的引數問題

這個要看資料庫來得,不同的資料庫,處理機制不一樣。例如 要求 查詢 sale report 表中,每日銷售金額 sale money 合計最大的10條資料,要求按從大到小,取第11條到第20條。對於 oracle 資料庫,一般是用 rownum 來處理。select from select rown...

為什麼MySQL的儲存過程的書寫這麼麻煩?DELIMITER這種字元有什麼作用

其實就是告訴mysql直譯器,該段命令是否已經結束了,mysql是否可以執行了。預設情況下,delimiter是分號 在命令列客戶端中,如果有一行命令以分號結束,那麼回車後,mysql將會執行該命令。如輸入下面的語句 mysql select from test table 然後回車,那麼mysql...