|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。存储历程|语句四年前写的一个内容办理体系,使用在公司外部网上,今天DBA说个中的SQL语句未利用参数化的挪用,招致服务器包袱减轻,资本占用年夜。并列出了几个占用资本较年夜的语句,相似以下:
SELECTART_ID,ART_TITLE,...FROMUSR_NEWS.VIEW_ARTICLEWHEREART_ISPASSED=YandART_CLASS=4066ORDERBYART_PASSTIMEDESC
个中where子句中的ART_CLASS的值是先断定后组合好如许整条sql语句,然后经由过程ado往实行的。因参数值分歧,在服务器端会发生分歧的sql语句,假如有10万个值,服务器就会为这10万条sql语句创立缓存。DBA说要改成art_class=:V体例(oracle数据库),我用与会见存储历程相似的代码来写,以下:
dimuserid
userid=1234
...
Command1.CommandText="SELECT*fromuserswhereuserid=:V"
Command1.Parameters.AppendCommand1.CreateParameter(":v",,,,userid)
setrs=Command1.Execute
运转时在CreateParameter语句处有以下堕落提醒:
ADODB.Command(0x800A0BB9)
参数范例不准确,或不在能够承受的局限以内,或与其他参数抵触。
晕逝世,为何存储历程能够,间接sql语句不可呢?
把省略的参数加上,仍是不合错误。
试了几回,都不可,因而找微软手艺撑持,几经周转终究办理了。本来经由过程ADO会见时sql语句中的参数要用“?”不必“:”“@”,以下为微软工程师对此成绩的小结:
成绩形貌:
在ASP中,假如经由过程VBScript挪用ADO操纵序列化SQL查询.您依照.NET的挪用办法呈现0x800A0BB9毛病。
办理举措:
在VB中挪用ADO的序列化查询,您能够参考上面两篇文章:
HowToInvokeaParameterizedADOQueryUsingVBA/C++/Java
http://support.microsoft.com/?id=181734
INFO:VisualBasicAccessinganOracleDatabaseUsingADO
http://support.microsoft.com/?id=176936
必要注重的是,在VBScript中,良多常量没有界说,好比adInteger,我们必要器具体的数值取代。关于CreateParameter的具体申明,请参考:
CreateParameterMethod
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmthcreateparam.asp
再次感激您致电微软。
</p>楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 |
|