当前位置: 首页 > news >正文

山东济南seo整站优化公司黑龙江省建设工程招标网站

山东济南seo整站优化公司,黑龙江省建设工程招标网站,开个做网站的公司 知乎,潮州住房与建设局网站EXEC Exec 命令有两种用法 1、执行存储过程 2、执行动态的批处理 exec 存储过程 参数 值 --或 exec 存储过程 值 exec 存储过程 存储过程中的参数参数{接受参数返回值} outputCREATE PROCEDURE [dbo].[Sp_GetStudent]Score FLOAT,Nums INT OUTPUT AS BEGINSET NOC…EXEC Exec 命令有两种用法 1、执行存储过程 2、执行动态的批处理 exec 存储过程 参数 值 --或 exec 存储过程 值 exec 存储过程 存储过程中的参数参数{接受参数返回值} outputCREATE PROCEDURE [dbo].[Sp_GetStudent]Score FLOAT,Nums INT OUTPUT AS BEGINSET NOCOUNT ON;SELECT * FROM t_student WHERE Score ScoreSELECT NumsCOUNT(1) FROM t_student WHERE Score ScoreIF(Nums0)RETURN 1ELSERETURN 0 END GO DECLARE return_value int,OutNums int EXEC return_value [dbo].[Sp_GetStudent] Score 90,Nums OutNums OUTPUT SELECT OutNums as N大于90分的人数 SELECT 返回值 return_value GOexec (select * from mytable) 使用EXEC执行动态sql语句注意下面问题 1.不能有输入参数输出参数 DECLARE i AS INT; SET i 10248; DECLARE sql AS VARCHAR(52); SET sql SELECT * FROM dbo.Orders WHERE OrderID i;; EXEC(sql); GO 2.圆括号内部能使用函数或case表达式 ----下面的脚本是错误的 DECLARE schemaname AS NVARCHAR(128), tablename AS NVARCHAR(128); SET schemaname Ndbo; SET tablename NOrder Details; EXEC(NSELECT COUNT(*) FROM QUOTENAME(schemaname) N. QUOTENAME(tablename) N;); GO ------不过把函数放在变量中是可以的 DECLARE schemaname AS NVARCHAR(128), tablename AS NVARCHAR(128), sql AS NVARCHAR(539); SET schemaname Ndbo; SET tablename NOrder Details; SET sql NSELECT COUNT(*) FROM QUOTENAME(schemaname) N. QUOTENAME(tablename) N; EXEC(sql); 3.不能利用重用执行计划存所以存在性能问题 DECLARE i AS INT; SET i 10248; DECLARE sql AS VARCHAR(52); SET sql SELECT * FROM dbo.Orders WHERE OrderID CAST(i AS VARCHAR(10)) N;; EXEC(sql); GO 4、容易被sql注入存在安全问题。 DECLARE lastname AS NVARCHAR(40), sql AS NVARCHAR(200); SET lastname N DROP TABLE dbo.Employees --; SET sql NSELECT * FROM dbo.Employees WHERE LastName lastname ;; EXEC sql; GO --实际sql SELECT * FROM dbo.Employees WHERE LastName DROP TABLE dbo.Employees --;注意 EXEC 执行拼接的SQL语句的时候不支持内嵌参数包括输入参数和输出参数。有的时候我们想把得到的count(*)传出来用EXEC是不好办到的 sp_executesql 重用执行计划提供更好的支持 语法结构 sp_executesql [ stmt ] stmt [ {, [params] N’parameter_name data_type [ OUT | OUTPUT ][,…n]’ } {, [ param1 ] ‘value1’ [ ,…n ] } ] exec sp_executesql stmtstatement,----类似存储过程的主体 paramsparams,-----类似存储过程的参数部分 params assignment----类似存储过程的调用 --stmt参数是输入的动态批处理它可以引入输入参数或输出参数和存储过程的主体语句一样只不过它是动态的而存储过程是静态的不过你可以在存储过程中使用sp_executesql ---params参数于定义输入、输出参数的存储过程头类似实际上和存储过程的语法完全一样 --params assignment与调用存储过程的exec部分类似DECLARE TotalSqlStr NVARCHAR(MAX); SET TotalSqlStr SELECT TotalRecords COUNT(p.Id) FROM (SELECT MainSqlStr FilterStr ) AS p;EXEC sp_executesql TotalSqlStr, NTotalRecords INT OUTPUT, TotalRecords OUTPUT如果你要把输出返回给调用批处理中的变量事情就没有那么简单了。为此你必须使用INSERT EXEC语法把输出插入到一个目标表中然后从这表中获取值后赋给该变量就像这样 DECLARE sql NVARCHAR(MAX),RecordCount INT SET sql SELECT COUNT(ORDERID) FROM Orders; CREATETABLE #T(TID INT); INSERT INTO #T EXEC(sql); --这里是一个表格 SET RecordCount (SELECT TID FROM #T) SELECT RecordCount DROP TABLE #T SP_EXECUTESQL 支持内嵌参数 因为参数是运行时传递进去SQL的而不是编译时传递进去的传递的参数是什么就按照什么执行参数本身不参与编译 所谓的参数化SQL就是用变量当做占位符通过 EXEC sp_executesql执行的时候将参数传递进去SQL中在需要填入数值或数据的地方使用参数 (Parameter) 来给值这样的话 第一既能避免第一种写法中的SQL注入问题包括转移符的处理    因为参数是运行时传递进去SQL的而不是编译时传递进去的传递的参数是什么就按照什么执行参数本身不参与编译 第二保证执行计划的重用因为使用占位符来拼凑SQL的SQL参数的值不同并导致最终执行的SQL文本不同    同上面参数本身不参与编译如果查询条件一样SQL语句就一样而参数不一样并不会影响要编译的SQL文本信息 缺点1,对于这种方式也有一点不好的地方就是拼凑的字符串处理过程中调试具体的SQL语句的时候参数是直接拼凑在SQL文本中的不能直接执行要手动将占位参数替换成具体的参数值
http://www.hkea.cn/news/14314708/

相关文章:

  • 台州黄岩做网站开发外贸产品的网站
  • 工程造价信息价在什么网站查杭州集团网站建设
  • 双语网站系统做网站pdf不能预览
  • 个人网站怎么建立流程成武菏泽网站建设
  • 网上购物正品网站政务网站建设模块
  • 做网站需要哪些流程外包做网站大概多少钱
  • 珠海新盈科技网站建设没有网站如何做cps
  • 沈阳的网站建设手机网站建设制作教程视频
  • 西安在线网站兰州高端网站建设
  • 自己做配图的网站大连设计网站公司
  • 注册公司有什么风险吗seo关键词优化公司
  • 深圳建设银行分行网站信主网站
  • 厦门网站建设代理做网站人员有什么名称
  • 网站开发需求单优秀建筑方案设计文本
  • 网站开发聊天室电脑做服务器上传网站
  • 企业网站开发询问薇房地产宣传软文
  • 北京做手机网站的公司深圳什么公司做网站好
  • 国内响应式网站模板wordpress交易排行榜
  • 企业网站管理系统设计报告wordpress修改自己的头像
  • 西安优化网站公司网站后台制作这么做
  • 国内漂亮的企业网站第十八届杭州动漫展
  • 最好的网站制作公司cn体育门户网站源码
  • jsp做网站实例上海网站建设找思创
  • 石家庄网站建设seo深圳产品设计师
  • 能做SEO优化的网站建设西宁做手机网站的公司
  • 网站登录入口网页用自己的电脑做主机建网站
  • 网站上实用的h5特效销售管理系统免费版
  • 任经理++徐州网站建设app推广是什么工作
  • 写一个网站需要什么技术凡科网站代码如何修改
  • 网站上做的广告有哪些种ug.wordpress