儲存過程 根據表名和索引獲取需要的列名

2021-09-08 02:06:34 字數 2694 閱讀 6601

create proc p_sword_getblcolumn

(@tblname varchar(200),

@fromindex int,

@toindex int,

@columnname varchar(3000) output

)as

begin

declare @tempcolumn varchar(3000)

declare @errmsg varchar(200)

declare @i int

set @i=1

set @columnname=''

set @errmsg=''

declare tempcolumncur cursor for

select syscolumns.name from syscolumns join sysobjects on syscolumns.id = sysobjects.id

where sysobjects.name =@tblname order by syscolumns.colorder

open tempcolumncur

fetch next from tempcolumncur into @tempcolumn

while @@fetch_status=0

begin

if(@fromindex=0 and @toindex=0)

begin

set @columnname=@columnname+','+@tempcolumn

endif(@fromindex=0 and @toindex<>0)

begin

if(@i<=@toindex)

set @columnname=@columnname+','+@tempcolumn

endelse if(@fromindex <>0 and @toindex=0)

begin

if(@i>=@fromindex)

set @columnname=@columnname+','+@tempcolumn

endelse if(@i>=@fromindex and @i<=@toindex)

begin

set @columnname=@columnname+','+@tempcolumn

endset @i=@i+1

print @i

fetch next from tempcolumncur into @tempcolumn

endclose tempcolumncur

deallocate tempcolumncur

set @columnname=substring(@columnname,2,len(@columnname))

print @columnname

if(@@error<>0)

begin

set @errmsg='get column error '

goto errorproc

endelse

return 0

enderrorproc:

begin

raiserror(@errmsg,16,1)

return 1

endgo

其中涉及到了raiserror函式

raiserror

(

[,argument [ ,...n ]]

) [with option [ ,...n ]]

引數說明:

第乙個引數

:msg_id:表示可以是乙個sys.messages表中定義的訊息代號;

使用 sp_addmessage 儲存在 sys.messages 目錄檢視中的使用者定義錯誤訊息號。

使用者定義錯誤訊息的錯誤號應當大於 50000。

msg_str:表示也可以是乙個使用者定義訊息,該錯誤訊息最長可以有 2047 個字元;

(如果是常量,請使用n'***x',因為是nvarchar的)

當指定 msg_str 時,raiserror 將引發乙個錯誤號為 5000 的錯誤訊息。

@local_variable:表示也可以是按照 msg_str 方式的格式化字串變數。

第二個引數:severity

使用者定義的與該訊息關聯的嚴重級別。(這個很重要)

任何使用者都可以指定 0 到 18 之間的嚴重級別。

[0,10]的閉區間內,不會跳到catch;

如果是[11,19],則跳到catch;

如果[20,無窮),則直接終止資料庫連線;

第三個引數:state

如果在多個位置引發相同的使用者定義錯誤,

則針對每個位置使用唯一的狀態號有助於找到引發錯誤的**段。

介於 1 至 127 之間的任意整數。(state 預設值為1)

當state 值為 0 或大於 127 時會生成錯誤!

第四個引數:argument

用於代替 msg_str 或對應於 msg_id 的訊息中的定義的變數的引數。

第五個引數:option

錯誤的自定義選項,可以是下表中的任一值:

log :在錯誤日誌和應用程式日誌中記錄錯誤;

nowait:將訊息立即傳送給客戶端;

seterror:將 @@error 值和 error_number 值設定為 msg_id 或 50000;

儲存過程動態表名

create or replace procedure bxsp data qb startdate in varchar2,開始日期 enddate in varchar2,結束日期 feetype in varchar2,費用型別 procesnode in varchar2,流程節點 audi...

根據儲存過程名建立對應的命令過程

using system using system.data sqlclient using system.data using system.collections using system.enterpriseservices namespace sev pant set private con...

根據表名獲取表字段資訊

實際應用中不免需要調取資料庫表字段的相關資訊,特此將 貼出,以作備用,調取的資訊 欄位名 字段型別 字段長度 是否主鍵 說明 建立sqlparameter public class cp public sqldbtype coltype public int collength public boo...