新人求大神指点下。。。

独自修行的人 2014-04-26 09:12:30
请问exec和execute有什么区别吗?
为什么要加上exec?
请问有储存过程这方面基础的东西吗?看书看到这里全部都看不懂了
最后print@sqlStr什么意思呢?
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2014-04-27
  • 打赏
  • 举报
回复
请问exec和execute有什么区别吗? 这是完全一样的,只不过实际写的时候,只需要写前4个关键的字母就可以了,不需要写全部的字母。 print@sqlStr? 这个事打印变量@sqlStr的值,估计拼接的字符串,然后用exec 来执行这个字符串吧
  • 打赏
  • 举报
回复
鸭子果然乃大神也
發糞塗牆 2014-04-27
  • 打赏
  • 举报
回复
打开联机丛书看看例子和说明
guguda2008 2014-04-26
  • 打赏
  • 举报
回复
你这是三个问题,之间没啥关联,我分开解释了 请问exec和execute有什么区别吗? 没有分别,EXEC是EXECUTE的简写,就像PROC是PRODUCE的简写一样。是同义词的概念。 为什么要加上exec? 执行存储过程的标准格式是 EXEC 存储过程名 参数1,参数2 如果没有参数,就是 EXEC 存储过程名 SQL SERVER里,执行单一存储过程的时候可以把EXEC也去掉,直接运行: 存储过程名 但如果你要运行多个存储过程,就必须写成 EXEC 存储过程名1 EXEC 存储过程名2 而不能写成 存储过程名1 存储过程名2 最后print@sqlStr什么意思呢? 这是调试动态SQL常用的语句,你要先搞清楚PRINT的意思。 在SSMS里执行 DECLARE @STR VARCHAR(100) SELECT @STR='ABC 123' PRINT @STR 看看效果,你就知道PRINT的用处了。 理解了PRINT的用处之后再解释动态SQL。如果你已经对参数有所理解,那你应该会知道参数可以这样用: DECLARE @ID INT SELECT * FROM T1 WHERE ID=@ID 但如果你想变的不是WHERE里的条件而是表名,那不能写成下面这样: DECLARE @TB VARCHAR(100) SET @TB='T1' SELECT * FROM @TB 你必须要用存储过程,执行一个用参数拼接而成的SQL语句才能达到你想要的效果: DECLARE @TB VARCHAR(100),@SQL VARCHAR(8000) SET @TB='T1' SET @SQL='SELECT * FROM '+@TB EXEC (@SQL) 这就是动态SQL的用法。当调试上面这个语句时,很多时候你需要检查拼出的SQL语句是否正确,这时就可以用PRINT替代EXEC,来输出拼出的SQL语句而不是语句运行的结果。 DECLARE @TB VARCHAR(100),@SQL VARCHAR(8000) SET @TB='T1' SET @SQL='SELECT * FROM '+@TB --EXEC (@SQL) PRINT @SQL

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧