當前位置:首頁 » 服務存儲 » 創建一個存儲過程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

創建一個存儲過程

發布時間: 2022-01-23 10:08:19

① 怎麼創建存儲過程在哪裡創建

是什麼資料庫啊,我給你個sql SERVER的吧

/*---------------------- 練習二 -------------------------*/

use bbsDB
go
if exists(select * from sysobjects where name='proc_find1')
drop procere proc_find1
go
create procere proc_find1
@userName varchar(10)
as
set nocount on
declare @userID varchar(10)
select @userID=UID from bbsUsers where Uname=@userName
if exists(select * from bbsTopic where TuID=@userID)
begin
print @userName+'發表的主帖如下:'
select 發帖時間=convert(varchar(10),Ttime,111),點擊率=TclickCount,
主題=Ttopic,內容=Tcontents from bbsTopic where TuID=@userID
end
else
print @userName+'沒有發表過主帖。'
if exists(select * from bbsReply where RuID=@userID)
begin
print @userName+'發表的回帖如下:'
select 回帖時間=convert(varchar(10),Rtime,111),點擊率=RclickCount,
回帖內容=Rcontents from bbsReply where RuID=@userID
end
else
print @userName+'沒有發表過回帖。'
go

exec proc_find1 '可卡因'

/*---------------------- 練習三 -------------------------*/

if exists(select * from sysobjects where name='proc_find2')
drop procere proc_find2
go
create procere proc_find2
@userName varchar(10),
@sumTopic int output,
@sumReply int output
as
set nocount on
declare @userID varchar(10)
select @userID=UID from bbsUsers where Uname=@userName
if exists(select * from bbsTopic where TuID=@userID)
begin
select @sumTopic=count(*) from bbsTopic where TuID=@userID
print @userName+'發表的主帖如下:'
select 發帖時間=convert(varchar(10),Ttime,111),點擊率=TclickCount,
主題=Ttopic,內容=Tcontents from bbsTopic where TuID=@userID
end
else
begin
set @sumTopic=0
print @userName+'沒有發表過主帖。'
end
if exists(select * from bbsReply where RuID=@userID)
begin
select @sumReply=count(*) from bbsReply where RuID=@userID
print @userName+'發表的回帖如下:'
select 回帖時間=convert(varchar(10),Rtime,111),點擊率=RclickCount,
回帖內容=Rcontents from bbsReply where RuID=@userID
end
else
begin
set @sumReply=0
print @userName+'沒有發表過回帖。'
end
go

declare @sum1 int, @sum2 int
exec proc_find2 '可卡因',@sum1 output,@sum2 output
if @sum1>@sum2
print '小弟發帖比回帖多,看來比較喜歡標新立異!'
else
print '小弟回帖比發帖多,看來比較關心民眾疾苦!'
print '總帖數:'+convert(varchar(5), @sum1+@sum2)
go

/*---------------------- 練習題一 -------------------------*/

if exists(select * from sysobjects where name='proc_find3')
drop procere proc_find3
go
create procere proc_find3
@userName varchar(10),
@sumTopic int output,
@sumReply int output,
@secName varchar(15)=''
as
set nocount on
declare @userID varchar(10)
select @userID=UID from bbsUsers where Uname=@userName
--版塊名稱為空
if (@secName='')
begin
if exists(select * from bbsTopic where TuID=@userID)
begin
select @sumTopic=count(*) from bbsTopic where TuID=@userID
print @userName+'發表的主帖數為:'+convert(varchar(5),@sumTopic)+' , 內容如下:'
select 發帖時間=convert(varchar(10),Ttime,111),點擊率=TclickCount,
主題=Ttopic,內容=Tcontents from bbsTopic where TuID=@userID
end
else
begin
set @sumTopic=0
print @userName+'沒有發表過主帖。'
end
if exists(select * from bbsReply where RuID=@userID)
begin
select @sumReply=count(*) from bbsReply where RuID=@userID
print @userName+'發表的回帖數量為:'+convert(varchar(5),@sumReply)+' , 內容如下:'
select 回帖時間=convert(varchar(10),Rtime,111),點擊率=RclickCount,
回帖內容=Rcontents from bbsReply where RuID=@userID
end
else
begin
set @sumReply=0
print @userName+'沒有發表過回帖。'
end
end
--版塊名稱不為空
else
begin
if exists(select * from bbsTopic where TuID=@userID)
begin
select @sumTopic=count(*) from bbsTopic where TuID=@userID
and TsID=(select SID from bbsSection where Sname like @secName)
print @userName+'曾在 '+@secName+' 版塊發表的主帖數量為:'+convert(varchar(5),@sumTopic)+' , 內容如下:'
select 發帖時間=convert(varchar(10),Ttime,111),點擊率=TclickCount,
版塊名稱=@secName,主題=Ttopic,內容=Tcontents from bbsTopic where TuID=@userID
end
else
begin
set @sumTopic=0
print @userName+'沒有發表過主帖。'
end
if exists(select * from bbsReply where RuID=@userID)
begin
select @sumReply=count(*) from bbsReply where RuID=@userID
and RsID=(select SID from bbsSection where Sname like @secName)
print @userName+'曾在 '+@secName+' 版塊發表的回帖數量為:'+convert(varchar(5),@sumReply)+' , 內容如下:'
select 回帖時間=convert(varchar(10),Rtime,111),點擊率=RclickCount,
版塊名稱=@secName,回帖內容=Rcontents from bbsReply where RuID=@userID
end
else
begin
set @sumReply=0
print @userName+'沒有發表過回帖。'
end
end
go

declare @sum1 int, @sum2 int
exec proc_find3 '可卡因',@sum1 output,@sum2 output,'.NET技術'
if @sum1>@sum2
print '小弟發帖比回帖多,看來比較喜歡標新立異!'
else
print '小弟回帖比發帖多,看來比較關心民眾疾苦!'
print '總帖數:'+convert(varchar(5), @sum1+@sum2)
go

/*---------------------- 練習題二 -------------------------*/

/*---------------------- 作業題 -------------------------*/

use bbsDB
go
if exists(select * from sysobjects where name='proc_delive')
drop procere proc_delive
go
create procere proc_delive
@userName varchar(10),
@sectionName varchar(20),
@topic varchar(20),
@contents varchar(20),
@face int
as
set nocount on
declare @userID varchar(10),@sectionID varchar(10)
select @userID=UID from bbsUsers where Uname=@userName
select @sectionID=SID from bbsSection where Sname like @sectionName

print @userName+'發帖前的狀態如下:'
select * from bbsUsers where UID=@userID

insert into bbsTopic(TsID,TuID,Ttopic,Tcontents,Tface)
values(@sectionID,@userID,@topic,@contents,@face)

print @userName+'發帖如下:'
select * from bbsTopic where TID=@@identity

update bbsSection set StopicCount=StopicCount+1 where SID=@sectionID
if not exists(select * from bbsTopic where Ttopic like @topic and TuID=@userID)
update bbsUsers set Upoint=Upoint+100 where UID=@userID
else
update bbsUsers set Upoint=Upoint+50 where UID=@userID

update bbsUsers set Uclass=case
when Upoint <500 then 1
when Upoint between 500 and 1000 then 2
when Upoint between 1001 and 2000 then 3
when Upoint between 2001 and 4000 then 4
when Upoint between 4001 and 5000 then 5
else 6
end
where UID=@userID

print @userName+'發帖後的狀態如下:'
select * from bbsUsers where UID=@userID
go

exec proc_delive '心酸果凍','.NET技術','.NET問題','請問如何使用……',3
go

② 1.創建一個存儲過程,

CREATE PROCEDURE PRO_XSTJ

AS

select 系部編號,
sum(case when sex='男' then 1 else 0 end)as 男生人數,
sum(case when sex='女' then 1 else 0 end)as 女生人數
from 表名
group by 系部編號

③ 如何建立一個資料庫存儲過程

在有sp_updatediagrams的實例上,用sp_helptext 獲取代碼
然後在缺失sp_updatediagrams的實例上運行。
再用下面語句,設為系統存儲過程:
<code style="font-size: 12px;"><span style="color:blue">EXEC </span><span style="color:darkred">sp_MS_Marksystemobject </span><span style="color:red">'sp_updatediagrams' </span></code>

④ 建立一個存儲過程

ORACLE中
CREATE OR REPLACE PROCEDURE CHECKXSJBXX(NOA IN

varchar)
is
namea varchar(50);
agea smallint;
BEGIN
SELECT name INTO nameA FROM xsjbxx
where no='s11';
SELECT AGE INTO ageA FROM xsjbxx
where no='s11';
dbms_output.put_line('姓名:'||nameA);
dbms_output.put_line('年齡:'||ageA);
end;
/

調用:exec checkxsjbxx(noa => '學號')

⑤ sql創建存儲過程

如果不需要帶參數,則
create proc proc_name
as
begin
update a set a.dept_id=b.dept_id
from employees a,departments b
where b.dept_name='經理辦公室'
and (工作年份大於六年)
end

工作年份大於6年不知道你這里要怎麼寫,如果是有一個入職時間的欄位T,
就是datediff(year,a.T,getdate())>6

⑥ 如何創建SQL存儲過程

步驟如下:

  1. 在對象資源管理器中,連接到某個資料庫引擎實例,再展開該實例。

  2. 展開「資料庫」、sql server存儲過程所屬的資料庫以及「可編程性」。

  3. 右鍵單擊「存儲過程」,再單擊「新建存儲過程」。

  4. 在「查詢」菜單上,單擊「指定模板參數的值」。

  5. 在「指定模板參數的值」對話框中,「值」列包含參數的建議值。接受這些值或將其替換為新值,再單擊「確定」。

  6. 在查詢編輯器中,使用過程語句替換 SELECT 語句。

  7. 若要測試語法,請在「查詢」菜單上,單擊「分析」。

  8. 若要創建sql server存儲過程,請在「查詢」菜單上,單擊「執行」。

  9. 若要保存腳本,請在「文件」菜單上,單擊「保存」。接受該文件名或將其替換為新的名稱,再單擊「保存」。

⑦ 創建一個存儲過程

--如下,可直接復制到SQLServer的查詢中執行use master
go
--創建資料庫
if(db_id('studentDB')) is not null
drop database [studentDB]
create database [studentDB]
go
use [studentDB]
go
--創建學生表
create table [student]
(
[studentId] int identity(1,1) primary key,
[stuName] varchar(50) not null
)
gouse [studentDB]
go
--創建成績表
create table [score]
(
[studentId] int not null,
[subjectName] varchar(50) not null,
[score] int
)
go
--添加外鍵約束
--學生ID
alter table [score]
add constraint FK_score_student
foreign key([studentId])
references [student] ([studentId])
go
--插入測試數據
insert [student]
select '張三' union
select '李四' union
select '王五' union
select '高六' union
select '趙七'
goinsert [score]
select 1,'語文',50 union
select 1,'數學',51 union
select 1,'英語',52 union
select 2,'語文',60 union
select 2,'數學',61 union
select 2,'英語',62 union
select 3,'語文',70 union
select 3,'數學',71 union
select 3,'英語',72 union
select 4,'數學',null union
select 4,'語文',100 union
select 4,'英語',null
go
use [studentDB]
go
--創建返回學生選課情況的存儲過程
alter procere [pro_GetStudentScore]
@subjectName varchar(50)
as
select stu.[studentId],stu.[stuName],isnull(sco.[subjectName],'該生沒選擇任何課程') [課程],isnull(convert(varchar(50),sco.[score]),'成績表中沒有這門課的成績') [成績]
from [student] stu left join [score] sco on(stu.[studentId]=sco.[studentId])
where sco.[subjectName]=@subjectName
go
--exec [pro_GetStudentScore] '英語'
--select * from score

⑧ 如何編寫存儲過程

//創建存儲過程

CREATE PROCEDURE userData(

IN id INT

)

BEGIN

SELECT * from userdata WHERE userflag = id;

END;

其中IN是傳進去的變數;

drop procere userData;//銷毀這個存儲過程。

call userData(2) //調用存儲過程。

(8)創建一個存儲過程擴展閱讀:

sql中的存儲過程及相關介紹:

CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號]

[(參數#1,…參數#1024)]

[WITH

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}

]

[FOR REPLICATION]

AS 程序行

其中存儲過程名不能超過128個字。每個存儲過程中最多設定1024個參數

(SQL Server 7.0以上版本),參數的使用方法如下:

@參數名數據類型[VARYING] [=內定值] [OUTPUT]。

每個參數名前要有一個「@」符號,每一個存儲過程的參數僅為該程序內部使用,參數的類型除了IMAGE外,其他SQL Server所支持的數據類型都可使用。

[內定值]相當於我們在建立資料庫時設定一個欄位的默認值,這里是為這個參數設定默認值。[OUTPUT]是用來指定該參數是既有輸入又有輸出值的,也就是在調用了這個存儲過程時,如果所指定的參數值是我們需要輸入的參數。

同時也需要在結果中輸出的,則該項必須為OUTPUT,而如果只是做輸出參數用,可以用CURSOR,同時在使用該參數時,必須指定VARYING和OUTPUT這兩個語句。

參考資料來源:網路-儲存過程