建立和呼叫儲存過程:查詢Stu資料庫中某個同學的選修課程的資訊,包括學號,姓名,課程名稱,成績
阿新 • • 發佈:2018-11-28
CREATE PROCEDURE proc_select--建立儲存過程 @Sno char(10) output,--輸入輸出引數 @Sname varchar(20) out,--輸出引數 @Cno char(4) out,--輸出引數 @grade tinyint out--輸出引數 AS SELECT @Sname=Sname,@Sno=Student.Sno,@Cno=cno,@grade=grade --select裡面寫輸出引數 FROM Student,SC --從學生表,選修表中查詢 where @Sno=Student.Sno--where裡面寫輸入引數
寫完上面重新整理所在資料庫下的可程式設計性下的儲存過程,可以看到已經建立了dbo.proc_selec
DECLARE @Sno char(10),@Sname varchar(20),@Cno char(4),@grade tinyint --宣告學號,姓名,課程號,成績四個變數 SET @Sno='201215121'--給Sno賦值 EXEC proc_select @Sno output,@Sname out,@Cno out,@grade out--執行四個引數 SELECT @Sno 'Sno' ,@Sname 'Sname',@Cno 'Cno',@grade 'grade' --顯示四個值,並分別取別名,如果沒有單引號裡的則顯示無列名
執行後顯示關於學號為‘201215121’的有關資訊
CREATE PROC proc_lab4 --儲存過程中含有遊標
@Sno char(10)
as
declare @ssno char(10),@ssname char(20),@ccname char(20),@scg int--宣告四個變數
declare cursor_s cursor--宣告遊標
for
select Student.Sno,Sname,Cname,grade
from Student,Course,SC--從三個表中選擇學號、姓名、課程名、成績
where Student.Sno=SC.Sno and Course.Cno=SC.Cno and [email protected];--連線
open cursor_s--開啟遊標
fetch next from cursor_s into @ssno,@ssname,@ccname,@scg
while @@fetch_status=0
begin
print @[email protected][email protected]+convert(char(10),@scg)
fetch next from cursor_s into @ssno,@ssname,@ccname,@scg
end
close cursor_s--關閉遊標
deallocate cursor_s--釋放遊標
exec proc_lab4 '201215121'
--只帶輸入引數
CREATE PROC p2
@sno char(10)
as
select Student.Sno,Sname,Cname,grade
from Student,SC,Course
where Student.Sno=SC.Sno and SC.Cno=Course.Cno
and [email protected]
exec p2 '201215121'