金色的骷髅 发表于 2015-1-16 22:36:52

MSSQL编程:实行带嵌进参数的sql――sp_executesql...

两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。实行一般实行sql语句,人人用的都是exec,exec功效壮大,但不撑持嵌进参数,sp_executesql办理了这个成绩。抄一段sqlserver匡助:

sp_executesql
实行能够屡次重用或静态天生的Transact-SQL语句或批处置。Transact-SQL语句或批处置能够包括嵌进参数。
语法
sp_executesql[@stmt=]stmt
[
{,[@params=]N@parameter_namedata_type[,...n]}
{,[@param1=]value1[,...n]}
]
参数
[@stmt=]stmt

包括Transact-SQL语句或批处置的Unicode字符串,stmt必需是能够隐式转换为ntext的Unicode常量或变量。不同意利用更庞大的Unicode表达式(比方利用+运算符串连两个字符串)。不同意利用字符常量。假如指定常量,则必需利用N作为前缀。比方,Unicode常量Nsp_who是无效的,可是字符常量sp_who则有效。字符串的巨细仅受可用数据库服务器内存限定。

stmt能够包括与变量名情势不异的参数,比方:

NSELECT*FROMEmployeesWHEREEmployeeID=@IDParameter

stmt中包括的每一个参数在@params参数界说列表和参数值列表中均必需有对应项。

[@params=]N@parameter_namedata_type[,...n]

字符串,个中包括已嵌进到stmt中的一切参数的界说。该字符串必需是能够隐式转换为ntext的Unicode常量或变量。每一个参数界说均由参数名和数据范例构成。n是标明附加参数界说的占位符。stmt中指定的每一个参数都必需在@params中界说。假如stmt中的Transact-SQL语句或批处置不包括参数,则不必要@params。该参数的默许值为NULL。

[@param1=]value1

参数字符串中界说的第一个参数的值。该值能够是常量或变量。必需为stmt中包括的每一个参数供应参数值。假如stmt中包括的Transact-SQL语句或批处置没有参数,则不必要值。

n

附加参数的值的占位符。这些值只能是常量或变量,而不克不及是更庞大的表达式,比方函数或利用运算符天生的表达式。
前往代码值
0(乐成)或1(失利)
了局集
从天生SQL字符串的一切SQL语句前往了局集。


例子(感激邹建供应)


declare@uservarchar(1000)
declare@moTablevarchar(20)
select@moTable=MT_10




declare@sqlnvarchar(4000)--界说变量,注重范例



set@sql=select@user=count(distinctuserid)from+@moTable--为变量赋值

--实行@sql中的语句
execsp_executesql@sql
,N@uservarchar(1000)out--暗示@sql中的语句包括了一个输入参数
,@userout--和挪用存储历程差未几,指定输入参数值

print@user






本例中,@moTable为嵌进参数。
一个语句分成两个event(实际上不止,其他可以忽略),一个table_mapevent和一个Rows_log_event。Table_mapevent是一样的,主要看Rows_log_event。

山那边是海 发表于 2015-1-19 18:45:15

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

柔情似水 发表于 2015-1-28 09:26:40

比如日志传送、比如集群。。。

变相怪杰 发表于 2015-2-5 15:27:27

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

深爱那片海 发表于 2015-2-12 14:20:19

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。

仓酷云 发表于 2015-3-3 03:28:50

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

乐观 发表于 2015-3-11 09:16:16

至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。

愤怒的大鸟 发表于 2015-3-18 02:54:22

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

小魔女 发表于 2015-3-25 10:10:10

呵呵,这就是偶想说的
页: [1]
查看完整版本: MSSQL编程:实行带嵌进参数的sql――sp_executesql...