1. 程式人生 > >建立和呼叫儲存過程:查詢Stu資料庫中某個同學的選修課程的資訊,包括學號,姓名,課程名稱,成績

建立和呼叫儲存過程:查詢Stu資料庫中某個同學的選修課程的資訊,包括學號,姓名,課程名稱,成績

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'