仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1146|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:Sql Server顶用变量名作为表名的办理方...

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。server|变量|办理
比来写procedure,碰到一些成绩。个中我以为关于“用变量名作为表名”的成绩较有代价,写出和人人一同分享。请列位如有好的办理计划必定要不惜见教。

情形:

假如你在写procedure时要依据特定变量的值静态创立table(表名是全体或部分特定变量的值)。比方:

declare@tablenamechar(10)

//ifsomestatement

set@tablename=test

你想用变量@tablename的值作为表名创立一个新表,那末用createtable@tablename(testchar(8))语句在SQLserver2k中实行就会碰到成绩,



办理(接上例):

//假如表不存在则创立

IFnotEXISTS(SELECTnameFROMsysobjects

WHEREname=@tablenameANDtype=U)

begin

set@createtable=createtable+@tablename+(mynamechar(2))

exec(@createtable)

end



<完>
php本地模拟的prepare底层就是mysql_real_escape_string,所以必须得用mysql_set_character_set去设置mysql->charset,否则就存在字符集问题。
海妖 该用户已被删除
沙发
 楼主| 发表于 2015-1-18 21:14:00 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
谁可相欹 该用户已被删除
板凳
发表于 2015-1-23 17:54:07 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
只想知道 该用户已被删除
地板
发表于 2015-1-31 18:36:05 | 只看该作者
从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-6 20:58:41 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
再见西城 该用户已被删除
6#
发表于 2015-2-18 19:21:37 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
山那边是海 该用户已被删除
7#
发表于 2015-3-6 09:11:45 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
爱飞 该用户已被删除
8#
发表于 2015-3-12 23:06:05 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
深爱那片海 该用户已被删除
9#
发表于 2015-3-20 05:10:32 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 18:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表