欢迎光临
我们一直在努力

加速你数据库和程序开发的存储过程-ASP教程,数据库相关

建站超值云服务器,限时71元/月

如果你是一个数据库工作者,或者是一个代码编写者,你是否为填写那些字段烦恼呢?少还好说,如果达到几十个,你一定会被弄得昏头晕脑,一下就失去了编写代码的快乐。

好了,用以下的方法使你省略了填写字段的烦恼,一下子就能够达到编写代码的性高潮!实在是居家旅游,必备良药,胜过伟哥!

第一步,建立视图!

create view col as

select

b.name colname,

b.colid,

c.name xcoltype,

(select name from systypes where xusertype = c.xtype and xtype = xusertype) coltype,/*convert user define type to system type*/

b.length sizes,

b.prec prec,

b.xscale scale,

convert(bit,b.status&8) nulls,

a.name objectname,

a.type objecttype

from sysobjects a,syscolumns b,systypes c

where a.type in (u,v,p) and a.id=b.id and b.xusertype=c.xusertype

第一步,建立存储过程!

create procedure sysgetcol

@objectname char(80)

as

declare

@objecttype char(10)

select

@objecttype = objecttype

from col

where objectname = @objectname

if @@rowcount = 0

begin

print internal error(001):

print not found object : + rtrim(@objectname) +!

return -1

end

select

colname,

coltype types,

xcoltype,

sizes,

prec,

scale,

colid,

nulls

into #temp

from col

where objectname = @objectname

order by colid

–patindex(%pattern%, expression)

–script object structure

if @objecttype = u

begin

select create table + rtrim(@objectname) + (

union all

select + rtrim(colname) + + rtrim(xcoltype)+

case xcoltype when char then (+rtrim(convert(char(3),sizes))+)

when numeric then ( + rtrim(convert(char(3),prec)) + , + rtrim(convert(char(3),scale)) + )

when varchar then (+rtrim(convert(char(3),sizes))+)

when nchar then ( + rtrim(convert(char(3) ,sizes)) + )

when nvarchar then ( + rtrim(convert(char(3) ,sizes)) + )

else

end +

case nulls when 0 then not null else end + ,

from #temp

union all

select )

end

/*building select statement*/

select create view view_ + rtrim(@objectname) + as + char(10) + select

union all

select +rtrim(colname)+, from #temp –order by colid

union all

select from + rtrim(@objectname)

/******update #temp set sizes=null where types<>char******/

–bulid procedure parameter

select create procedure + rtrim(@objectname) + _update

union all

select

@ + rtrim(colname) + + rtrim(xcoltype)+

case xcoltype when char then (+rtrim(convert(char(3),sizes))+) ,

when numeric then ( + rtrim(convert(char(3),prec)) + , + rtrim(convert(char(3),scale)) + ) ,

when varchar then (+rtrim(convert(char(3),sizes))+) ,

when nchar then ( + rtrim(convert(char(3) ,sizes)) + )

when nvarchar then ( + rtrim(convert(char(3) ,sizes)) + )

else ,

end

from #temp

–order by colid

union all

select as

/*building update part*/

union all

select update + rtrim(@objectname) + set

union all

select +rtrim(colname)+ = @+rtrim(colname)+ , from #temp– order by colid

union all

select where

union all

select +rtrim(colname)+ = @+rtrim(colname)+ and from #temp– order by colid

union all

/*update #temp set sizes=null*/

/*building insert statement*/

select if @@rowcount = 0

union all

select insert into + rtrim(@objectname) + (

union all

select +rtrim(colname)+ , from #temp– order by colid

union all

select )

union all

select values(

union all

select @+rtrim(colname)+ , from #temp –order by colid

union all

select )

select +rtrim(colname)+ = trim(request("+rtrim(colname)+")) from #temp

select +rtrim(colname)+ = trim(rs("+rtrim(colname)+")) from #temp –order by colid

select .parameters(+rtrim(colid)+) = + colname from #temp –order by colid

go

第三步,使用该存储过程!

假设你的数据库里有一个叫做nta_base_member的表

create table nta_base_member (

m_id bigint not null ,

m_type smallint ,

m_state smallint ,

memberid bigint ,

travelco_id bigint

)

打开你的查询分析器,键入

sysgetcol nta_base_member

然后按ctrl+t,然后按f5,看看查询分析器出现什么东东?

所影响的行数为 5 行)

—————————————————————————————————————————————————————————————————————————————————————-

create table nta_base_member (

m_id bigint not null ,

m_type smallint ,

m_state smallint ,

memberid bigint ,

travelco_id bigint ,

)

(所影响的行数为 7 行)

———————————————————————————————————————————-

create view view_nta_base_member as

select

m_id,

m_type,

m_state,

memberid,

travelco_id,

from nta_base_member

(所影响的行数为 7 行)

—————————————————————————————————————————————————————————————————————————————————————-

create procedure nta_base_member_update

@m_id bigint ,

@m_type smallint ,

@m_state smallint ,

@memberid bigint ,

@travelco_id bigint ,

as

update nta_base_member set

m_id = @m_id ,

m_type = @m_type ,

m_state = @m_state ,

memberid = @memberid ,

travelco_id = @travelco_id ,

where

m_id = @m_id and

m_type = @m_type and

m_state = @m_state and

memberid = @memberid and

travelco_id = @travelco_id and

if @@rowcount = 0

insert into nta_base_member(

m_id ,

m_type ,

m_state ,

memberid ,

travelco_id ,

)

values(

@m_id ,

@m_type ,

@m_state ,

@memberid ,

@travelco_id ,

)

(所影响的行数为 34 行)

—————————————————————————————————————————————————————————————————————————————————————-

m_id = trim(request("m_id"))

m_type = trim(request("m_type"))

m_state = trim(request("m_state"))

memberid = trim(request("memberid"))

travelco_id = trim(request("travelco_id"))

(所影响的行数为 5 行)

—————————————————————————————————————————————————————————————————————————————————————-

m_id = trim(rs("m_id"))

m_type = trim(rs("m_type"))

m_state = trim(rs("m_state"))

memberid = trim(rs("memberid"))

travelco_id = trim(rs("travelco_id"))

(所影响的行数为 5 行)

——————————————————————————————————————————————————-

.parameters(1) = m_id

.parameters(2) = m_type

.parameters(3) = m_state

.parameters(4) = memberid

.parameters(5) = travelco_id

(所影响的行数为 5 行)

看到生成的代码,你应该明白什么了吧?呵呵,ctrl+c到你要写的代码里了,爽吧,。。。。。。。。。。。。高潮,射了~

◇ 广告时间:

数据库代码,文档由86fifa编写整理。

nb联盟提供专业级的网站程序开发,数据库开发,收费技术支持、安全顾问服务

联系方式:

qq组:1019634 (nb联盟)

主页:http://www.54nb.com

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 加速你数据库和程序开发的存储过程-ASP教程,数据库相关
分享到: 更多 (0)

相关推荐

  • 暂无文章