當前位置:首頁 » 存儲配置 » sql存儲

sql存儲

發布時間: 2022-01-29 04:46:26

A. sql存儲過程

可以修改為:在if exists判斷之後
select RaceNumbers into #rid from Matchinformation
where RaceNumbers in (select RaceNumbers from inserted)
group by RaceNumbers having count(RaceNumbers)=2

update Team set Integration=(case when a.PGoals-b.PGoals >0 then 3
when a.PGoals-b.PGoals=0 then 1 else 0 end)
from Matchinformation a left join MatchInformation b on a.RaceNumbers =b.RaceNumbers
and a.TeamId<>b.TeamId
where Team.TeamId=a.TeamId and a.RaceNumbers in(select * from #rid)

B. 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

C. sql存儲過程是什麼

所有設計優良的 Microsoft® SQL Server™ 2000 應用程序都應當使用存儲過程。不論是否將應用程序的業務邏輯寫入存儲過程都應如此。甚至連沒有業務邏輯組件的標准 Transact-SQL 語句,在用參數打包成存儲過程後也能獲得性能收益。編譯進存儲過程的 Transact-SQL 語句在執行時可省去大量的處理。
存儲過程的另一個優點是客戶端執行請求使用網路的效率比將等效的 Transact-SQL 語句發送到伺服器高。例如,假設應用程序需要將一個大的二進制值插入 image 數據列。為使用 INSERT 語句發送數據,該應用程序必須將該二進制值轉換為字元串(其大小翻倍),然後發送到伺服器。伺服器再將該值轉換回二進制格式以存儲在 image 列中。
相反,應用程序可以創建下列格式的存儲過程:
CREATE PROCEDURE P(@p1 image) AS INSERT T VALUES (@p1)
當客戶端應用程序請求執行過程 P 時,image 參數值將一直以二進制格式發送到伺服器,從而節省處理時間並減少網路流量。
如果 SQL Server 存儲過程中包含業務服務邏輯,因為業務服務邏輯將處理移動到數據,而不是將數據移動到處理,因而存儲過程能提供更大的性能收益。
存儲過程的優點
(1)存儲過程的能力大大增強了SQL語言的功能和靈活性。存儲過程可以用流控制語句編寫,有很強的靈活性,可以完成復雜的判斷和較復雜的 運算。
(2) 可保證數據的安全性和完整性。
● 通過存儲過程可以使沒有許可權的用戶在控制之下間接地存取資料庫,從而保證數據的安全。
● 通過存儲過程可以使相關的動作在一起發生,從而可以維護資料庫的完整性。
(3) 再運行存儲過程前,資料庫已對其進行了語法和句法分析,並給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。 由於執行SQL語句的大部分工作已經完成,所以存儲過程能以極快的速度執行。
(4)可以降低網路的通信量。
(5) 使體現企業規則的運算程序放入資料庫伺服器中,以便:
● 集中控制。
● 當企業規則發生變化時在伺服器中改變存儲過程即可,無須修改任何應用程序。企業規則的特點是要經常變化,如果把體現企業規則的運算程序放入應用程序中,則當企業規則發生變化時,就需要修改應用程序工作量非常之大(修改、發行和安裝應用程序)。如果把體現企業規則的 運算放入存儲過程中,則當企業規則發生變化時,只要修改存儲過程就可以了,應用程序無須任何變化。

1.使用企業管理器創建用戶存儲過程
操作步驟如下:
(1)啟動SQL Server企業管理器。
(2)在「控制台根目錄」窗口,展開「SQL Server組」,首先,選擇「資料庫」,然後,選擇「存儲過程」,單擊滑鼠右鍵,打開快捷菜單。
(3)在打開快捷菜單中,選擇「新建存儲過程」菜單命令,進入「存儲過程屬性」窗口。
(4)在「存儲過程屬性」窗口,在文本框中輸入存儲過程代碼,單擊「確定」,結束存儲過程的創建。
2.使用T-SQL語句創建用戶存儲過程
SQL命令格式:
CREATE PROC [ EDURE ] <Procere_name> [ ; Number ]
[ { @parameter Data_type }
[ VARYING ] [ = Default ] [ OUTPUT ]] [ ,...n ]
[ WITH{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }]
[ FOR REPLICATION ]
AS sql_statements
功能:創建一個用戶存儲過程,並保存在資料庫中。

D. SQL存儲過程

CREATE PROCEDURE SP_Transfer
(
@StartDate DATETIME INPUT,
@EndDate DATETIME INPUT,
@Result int OUTPUT
)
AS
BEGIN
Select @Result = [欄位名] From [表名]
WHERE indate_start = @StartDate AND
indate_end = @EndDate
END

Declare @RESULT INT;
EXEC SP_Transfer N'2009-06-30' N'2009-07-29' @RESULT

PRINT @RESULT

E. SQL存儲過程怎麼寫

--表a和表b兩個表之間要存在一種聯系(比如你的會員ID,在這兩個表裡都有吧?)
--所以你可以這樣寫
--select case a.STS when Y then b.臨時地址 else a.聯系地址 end as Address
--from a join b on a.會員ID=b.會員ID
--這樣就可以得到相應的地址了

F. sql存儲過程用遞歸

表結構:
sale_area銷售分區表
PK#area_id
class_id
gonghao
prod_class產品分類表
PK#class_id
class_name
問題sql語句:
select
distinct
pa.class_id
from
prod_class
As
pa,prod_class
As
pb,sale_area
where
pb.class_id
in(select
sale_area.class_id
from
sale_area
where
sale_area.gonghao=<param>)
and
pa.class_id
like
pb.class_id||'%'
問題定義:
根據傳入的參數gonghao來確定對應的class_id集,然後遍歷這個class_id集,並「擴充」這個集合
要理解「擴充」必須知道class_id是這樣設等級:
0為最高級
|_01
|
|_011
|
|_012
|_02
|_011
|_012
那麼擁有等級0的話,所有的等級都應該可以訪問,擁有等級01的話,011、012也可以訪問。
這句sql的目的就是得到當前員工能訪問的所有產品分類及它的子集。
通過自連接的做法在Oracle里是對的,在DB2里就錯,原因在於DB2中謂詞like兩邊至少有一個是字元串,也就是說DB2不認為pb.class_id||'%'是字元串。
求解:
要完成上面的任務有什麼可替代的辦法或改進的地方,注意環境是DB2
UDB
7.2。
---------------------------------------------------------------
就是樹的問題。
使用公共表達式可以完成。
你在信息中心裏面按recusion去搜索,可以找到遞歸sql的寫法。
---------------------------------------------------------------
問題寫的很清楚,我喜歡!
如果要使用DB2的公共表達式建議你把
prod_class產品分類表結構改一下
PK#class_id
class_name
Parent_Class_id
sql語句如下:
with
temp_class_id(
class_id,class_name)
(
select
pc.class_id,pc.class_name
from
prod_class
pc
where
pc.class_id
in
(select
sale_area.class_id
from
sale_area
where
sale_area.gonghao=<param>)
union
select
pc.class_id,pc.class_name
from
prod_class
pc,
temp_class_id
tc
where
pc.parent_id
=
tc.class_id)
select
*
from
temp_class_id;

G. sql語句存儲過程

可以先將多個商品ID拼成一個字元串("3,4,5")再傳進去
create PROCEDURE pro_deleteProct
@Uid int ,
@Pids varchar(50)
AS
declare @sql varchar(200)
BEGIN
set @sql= 'delete from Procts where ProctId = '+ convert(varchar(20),@Uid) +' and ProctId in ('+@Pids+')'
--print @sql
exec (@sql)
END
GO

H. sql存儲過程寫法

select * from table where id = @id or @id is null

I. SQL存儲問題

我們假設你的表叫 table
他的四個欄位分別是 id, type, num, time

CREATE PROCEDURE temp
@id varchar(10),
@begindate datetime,
@enddate datetime

as

select id,
case when type='賣出' then num else null end,
case when type='買入' then num else null end
from table
where id=isnull(@id,id)
and time between isnull(@begindate,time) and isnull(@enddate,time)

J. SQL存儲函數

create proc stu_proc2
@no varchar(50)
as
begin
select 學生,sum(成績),sum(成績)/count(1) from 表 group by 學生
end

熱點內容
ftp錯誤無法獲得遠端文件夾信息 發布:2024-09-22 14:20:19 瀏覽:124
如何在安卓服看到白鳥 發布:2024-09-22 14:20:16 瀏覽:220
仿回車源碼 發布:2024-09-22 14:01:14 瀏覽:518
mysql資料庫索引原理 發布:2024-09-22 13:58:55 瀏覽:22
android照片旋轉 發布:2024-09-22 13:53:39 瀏覽:443
編程大牛 發布:2024-09-22 13:49:08 瀏覽:720
為什麼電腦彈出代理伺服器錯誤 發布:2024-09-22 13:48:21 瀏覽:385
我的世界啟動器推薦伺服器地址 發布:2024-09-22 13:44:09 瀏覽:638
c語言中的unsignedchar 發布:2024-09-22 13:11:12 瀏覽:169
最好的加密移動硬碟 發布:2024-09-22 12:35:58 瀏覽:158