Ⅰ 關於存儲過程的疑問!!求幫助!!
首先,存儲過程在執行的時候不需要預編譯,就速度上來說占優勢
另外,存儲過程相當於開發中的封裝,內部的查詢邏輯對於程序來說是不需要知道的,這樣在你的數據結構或者查詢邏輯有改動的時候,不會影響到程序這點是非常好的
再者,在很多查詢中我們需要連接很多表或者變數或者其它的時候,我們用存儲過程可以將臨時表,變數等鎖定在存儲過程中,它們的生命周期僅存在於存儲過程的執行期內不會影響到其它的應用
其它好處有很多,不一一列舉了。。
前台調用的話要看開發工具了,工具不同執行方式不同
在sql的查詢分析器中可以直接調用
例如:exec procName 參數,參數(注意字元串或者時間都要加'',例如:'1988-12-14','參數1')
如果有不明白的地方可以給我留言
Ⅱ 存儲過程中怎樣計算表的行數
Create Proc linecount--新建存儲過程
@count int output--輸出參數
as
select @count=count(*) from notice--統計賦值
--調用
declare @a--聲明變數@a
execute linecount @a output--調用存儲過程
print @a--輸出變數@a
夠詳細吧
Ⅲ 請問什麼是存儲過程,存儲過程作用是什麼,什麼情況下才用存儲過程如何用sql調用存儲過程
sql語句執行的時候要先編譯,然後執行。存儲過程(Stored Procere)是一組為了完成特定功能的SQL語句集,經編譯後存儲在資料庫中。用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程.
這是一個基礎教程你看看http://www.aspxuexi.com/asp/sp/2007-11-20/2990.htm
Ⅳ 用存儲過程實現錶行加減的運算
--我給你舉個差不多的列子你就明白了
--我把我的表設欄位少點
create table tb (col1 int, col2 int,col3 int,col4 int)
insert tb(col1,col2,col3 ) select
1,2,3 union all select 3,4,7 union select 5,6,9
--我的計算規則就是col4的值=該行的col1+col3-col2+上一行的col4的列值
--注意:你沒有給出第一行的col4計算規則 我假設第一行計算的時候那個上一行的col4值為0
go
alter proc sp_Z
as
begin
DECLARE @COL4 INT
declare cur cursor for
select col1,col2,col3 from tb
open cur
declare @col1 int,@col2 int,@col3 int
fetch next from cUr into @col1,@col2,@col3
while @@FETCH_STATUS = 0
begin
--計算出該行的@col4值 賦值給col4
set @COL4=@col1+@col3-@col2+ISNULL(@col4,0)--這個isnull(@col4,0)裡面的@col4就是上一行的col4值
update tb
set col4=@col4
where col1 = @col1 and col2=@col2 and col3 = @col3
fetch next from cur into @col1,@col2,@col3
end
close cur
deallocate cur
select * from tb
end
go
--執行存儲過程
exec sp_Z
/*
col1 col2 col3 col4
----------- ----------- ----------- -----------
1 2 3 2
3 4 7 8
5 6 9 16
*/
Ⅳ SQL 存儲過程中 怎麼將string轉換為int進行計算
第一個方法就是使用執行sql語句,參數sql就是sql語句;
第二個方法就是調用存儲過程,參數sql就是存儲過程的名稱,paras就是存儲過程的參數。
Ⅵ 存儲過程中的比較運算符是什麼
用 if(@id is null) 或者 if isnull(@id,0)=0
Ⅶ 怎麼在存儲過程中 使用加減運算
???????????你自己不已經寫了么set @new_sum=@in_sum+@have_sum
你覺得這一句只是把IN_SUM的值給了NEW_SUM?那你的那個+HAVE_SUM你以為是干什麼用的
Ⅷ sqlserver 存儲過程 怎麼計算兩個數的和。
既然計算記過需要保存下來以後使用,那就不要用儲存過程,使用函數就可以獲取到返回值了。
Ⅸ 存儲函數和存儲過程如何將運算結果返回給外界
存儲函數可以通過return語句返回函數值,存儲過程通過out inout 參數將結果帶出
存儲函數和存儲過程如何將運算結果返回給外界?通過return語句返回函數值,和通過out inout 參數將結果帶出。
Ⅹ SQL 中存儲過程怎麼使用
一、簡單的儲存過程:
1、創建一個存儲過程
create procere GetUsers()
begin
select * from user;
end;12345
2、調用存儲過程
call GetUsers();12
3、刪除存儲過程
drop procere if exists GetUsers;
二、帶參數的存儲過程
1、MySql 支持 IN (傳遞給存儲過程) , OUT (從存儲過程傳出) 和 INOUT (對存儲過程傳入和傳出) 類型的參數 , 存儲過程的代碼位於 BEGIN 和 END 語句內 , 它們是一系列 SQL 語句 , 用來檢索值 , 然後保存到相應的變數 (通過指定INTO關鍵字) ;
2、下面的存儲過程接受三個參數 , 分別用於獲取用戶表的最小 , 平均 , 最大分數 , 每個參數必須具有指定的類型 , 這里使用十進制值(decimal(8,2)) , 關鍵字 OUT 指出相應的參數用來從存儲過程傳出
create procere GetScores(
out minScore decimal(8,2),
out avgScore decimal(8,2),
out maxScore decimal(8,2)
)
begin
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
end;1234567891011
3、調用此存儲過程 , 必須指定3個變數名(所有 MySql 變數都必須以@開始) , 如下所示 :
call GetScores(@minScore, @avgScore, @maxScore);12
4、該調用並沒有任何輸出 , 只是把調用的結果賦給了調用時傳入的變數@minScore, @avgScore, @maxScore, 然後即可調用顯示該變數的值 :
select @minScore, @avgScore, @maxScore;
5、使用 IN 參數 , 輸入一個用戶 id , 返回該用戶的名字 :
create procere GetNameByID(
in userID int,
out userName varchar(200)
)
begin
select name from user
where id = userID
into userName;
end;12345678910
6、調用存儲過程 :
call GetNameByID(1, @userName);
select @userName;123