|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP脚本是采用明文(plaintext)方式来编写的。程序|存储历程|数据|数据库假如你是一个数据库事情者,大概是一个代码编写者,你是不是为填写那些字段懊恼呢?少还好说,假如到达几十个,你必定会被弄得昏头晕脑,一下就得到了编写代码的康乐。
好了,用以下的办法使你省略了填写字段的懊恼,一会儿就可以够到达编写代码的性低潮!其实是居家旅游,必备良药,赛过伟哥!
第一步,创建视图!
createVIEWColAS
select
b.NameColName,
b.ColID,
c.NamexColtype,
(selectNamefromsystypeswherexUserType=c.xTypeandxType=xUserType)ColType,/*convertuserdefinetypetosystemtype*/
b.LengthSizes,
b.PrecPrec,
b.xScaleScale,
convert(bit,b.status&8)Nulls,
a.NameObjectName,
a.TypeObjectType
fromsysobjectsA,syscolumnsb,systypesc
wherea.typein(U,V,P)anda.Id=b.Idandb.Xusertype=c.Xusertype
第一步,创建存储历程!
CREATEPROCEDUREsysgetcol
@objectnameChar(80)
AS
declare
@objecttypechar(10)
select
@objecttype=objecttype
fromCOL
whereobjectname=@objectname
if@@ROWCOUNT=0
begin
PrintInternalError(001):
Printnotfoundobject:+Rtrim(@objectname)+!
Return-1
end
select
colname,
colTypetypes,
xColType,
sizes,
prec,
scale,
colid,
Nulls
Into#temp
fromCOL
whereobjectname=@objectname
orderbycolid
--PATINDEX(%pattern%,expression)
--ScriptobjectStructure
if@objecttype=U
begin
selectCreateTable+Rtrim(@objectname)+(
unionall
select+Rtrim(colname)++RTrim(xColType)+
CasexColTypewhenCharthen(+RTrim(Convert(Char(3),sizes))+)
whenNumericthen(+RTrim(Convert(Char(3),Prec))+,+RTrim(Convert(Char(3),Scale))+)
whenVarcharthen(+RTrim(Convert(Char(3),sizes))+)
whenncharthen(+RTrim(Convert(Char(3),sizes))+)
whennvarcharthen(+RTrim(Convert(Char(3),sizes))+)
else
end+
casenullswhen0thenNotNullelseend+,
from#temp
unionall
select)
end
/*Buildingselectstatement*/
selectCREATEVIEWview_+RTrim(@objectname)+AS+Char(10)+select
unionall
select+RTrim(colname)+,from#temp--orderbycolid
unionall
selectfrom+RTrim(@objectname)
/******update#tempsetsizes=NullwhereTypesChar******/
--bulidprocedureparameter
selectCREATEPROCEDURE+RTrim(@objectname)+_Update
UNIONALL
select
@+RTrim(colname)++RTrim(xColType)+
CasexColTypewhenCharthen(+RTrim(Convert(Char(3),sizes))+),
whenNumericthen(+RTrim(Convert(Char(3),Prec))+,+RTrim(Convert(Char(3),Scale))+),
whenVarcharthen(+RTrim(Convert(Char(3),sizes))+),
whenncharthen(+RTrim(Convert(Char(3),sizes))+)
whennvarcharthen(+RTrim(Convert(Char(3),sizes))+)
else,
end
from#temp
--orderbycolid
UNIONALL
selectAS
/*Buildingupdatepart*/
UNIONALL
selectupdate+RTrim(@objectname)+set
UNIONALL
select+RTrim(colname)+=@+RTrim(colname)+,from#temp--orderbycolid
UnionAll
selectwhere
UnionAll
select+RTrim(colname)+=@+RTrim(colname)+andfrom#temp--orderbycolid
UNIONALL
/*update#tempsetsizes=Null*/
/*BuildingInsertstatement*/
selectif@@ROWCOUNT=0
UNIONALL
selectinsertinto+Rtrim(@objectname)+(
UNIONALL
select+RTrim(colname)+,from#temp--orderbycolid
UNIONALL
select)
UNIONALL
selectvalues(
UNIONALL
select@+RTrim(colname)+,from#temp--orderbycolid
UNIONALL
select)
select+RTrim(colname)+=Trim(request("+RTrim(colname)+"))from#temp
select+RTrim(colname)+=Trim(rs("+RTrim(colname)+"))from#temp--orderbycolid
select.parameters(+Rtrim(colid)+)=+colnamefrom#temp--orderbycolid
GO
第三步,利用该存储历程!
假定你的数据库里有一个叫做Nta_base_member的表
CreateTableNta_base_member(
m_idbigintNotNull,
m_typesmallint,
m_statesmallint,
memberidbigint,
travelco_idbigint
)
翻开你的查询剖析器,键进
sysgetcolNta_base_member
然后按ctrl+t,然后按F5,看看查询剖析器呈现甚么东东?
所影响的行数为5行)
----------------------------------------------------------------------------------------------------------------------------------------------</p>优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件 |
|