SQL建立的幾種儲存過程

2022-03-04 10:37:56 字數 1615 閱讀 1890

建立儲存過程

表名和比較字段可以做引數的儲存過程

create procedure  sp_getteacherinfo

@tblname nvarchar(30),  -- 表名

@cmpstr  nvarchar(30),  -- 參與比較的值

@tblatr  nvarchar(30)   -- 參與比較的字段

asdeclare   @sql   varchar(4000)

set @sql = 'select * from ' + @tblname + ' where ' + @tblatr + '=' + @cmpstr

exec (@sql)

表 tbl_teacherinfo

// 注意:像這樣的呼叫是錯誤的

還原成查詢語句

select * from tbl_teacherinfo where teano = 07417502

之所以沒報錯,是因為引數'07417502'被誤認為了 整型,進行了整數的比較

exec sp_getteacherinfo  'tbl_teacherinfo','name','楚留香'

// 報錯

還原成查詢語句

select * from tbl_teacherinfo where teano = 楚留香

// 顯然是錯誤的

正確的呼叫方法

exec sp_getteacherinfo  'tbl_teacherinfo','name',"'楚留香' "

還原成查詢語句

select * from tbl_teacherinfo where teano = '楚留香'

常規儲存過程的建立

create procedure sp_addrowtologin

@teano  nvarchar(100),  -- 比較字段

@teaname  nvarchar(100)   -- 比較字段

asinsert into tbl_userlogin values(@teano,@teaname,@teano,0)

除了指定列其他列都返回的儲存過程

create procedure sp_alter

@tblname nvarchar(30)  -- 表名

asdeclare @sql varchar(1000)

select @sql='select '

select @sql=@sql+name+',' from syscolumns where id=object_id(@tblname) and name not in ('id','teano')

select @sql=left(@sql,len(@sql)-1)

select @sql=@sql+' from ' + @tblname

exec (@sql)  

// 除了id和teano兩列不返回,其他都返回

SQL建立的幾種儲存過程

建立儲存過程 表名和比較字段可以做引數的儲存過程 create procedure sp getteacherinfo tblname nvarchar 30 表名 cmpstr nvarchar 30 參與比較的值 tblatr nvarchar 30 參與比較的字段 as declare sql...

sql儲存過程的建立

一 沒有引數的儲存過程 create procedure select all asbegin select from t login1 endgo 二 帶引數的儲存過程 create procedure select name id uniqueidentifier asbegin select ...

SQL 建立儲存過程PROCEDURE

1 建立儲存過程 use test2 gocreate procedure fruitproce 檢視表fruits的儲存過程 asselect from fruits go use test2 go create procedure countproce 獲取表fruits的記錄數 asselec...