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裡儲存過程怎麼呼叫儲存過程
司馬鑄劍 在sql server資料庫的維護或者web開發中,有時需要在儲存過程或者作業等其他資料庫操作中呼叫其它的儲存過程,下面介紹其呼叫的方法 在sql server資料庫的維護或者web開發中,有時需要在儲存過程或者作業等其他資料庫操作中呼叫其它的儲存過程,下面介紹其呼叫的方法 一 sql s...
sqlserver怎麼建立儲存過程
168隨風 1 建立語法 create proc procedure pro name 預設值 output 預設值 output as sql statements 2 建立不帶引數儲存過程 建立儲存過程 if exists select from sys.objects where name p...
sql 迴圈呼叫儲存過程,sql server 儲存過程如何對select語句的結果集進行迴圈操作
你的語句裡,randcardid都是預設值,所以是重複的。create table temp str char 19 declare randcardid char 19 exec proc randcardid randcardid output declare num int set num 0...