动态语句语法:exec\sp_executesql语法(转载)

--动态语句语法
/******************************************
动态语句语法:exec\sp_executesql语法

整理人:中国风(Roy)

日期:2008.06.06
*******************************************/
动态语句语法:

--方法1查询表改为动态
select * from sysobjects
exec('select ID,Name from sysobjects')
exec sp_executesql N'select ID,Name from sysobjects'--多了一个N为unicode

--方法2:字段名,表名,数据库名之类作为变量时,用动态SQL
declare @FName varchar(20)
set @FName='ID'
exec('select '+@FName+' from sysobjects where '+@FName+'=5' )

declare @s varchar(1000)
set @s=N'select '+@FName+' from sysobjects where '+@FName+'=5'
exec sp_executesql @s--会报错

declare @s nvarchar(1000)--改为nvarchar
set @s=N'select '+@FName+' from sysobjects where '+@FName+'=5'
exec sp_executesql @s--成功

--方法3:输入参数

declare @i int,@s nvarchar(1000)
set @i=5
exec('select ID,Name from sysobjects where ID='+@i)

set @s='select ID,Name from sysobjects where ID=@i'
exec sp_executesql @s,N'@i int',@i--此处输入参数要加上N

--方法4:输出参数

declare @i int,@s nvarchar(1000)
set @s='select @i=count(1) from sysobjects'

--用exec
exec('declare @i int '+@s+' select @i')--把整个语句用字符串加起来执行

--用sp_executesql
exec sp_executesql @s,N'@i int output',@i output--此处输出参数要加上N
select @i

--方法5:输入输出

--用sp_executesql
declare @i int,@con int,@s nvarchar(1000)
set @i=5
select @s='select @con=count(1) from sysobjects where ID>@i'
exec sp_executesql @s,N'@con int output,@i int',@con output ,@i
select @con

--用exec
declare @i int,@s nvarchar(1000)
set @i=5
select @s='declare @con int select @con=count(1) from sysobjects where ID>'+rtrim(@i)+' select @con'
exec(@s)

时间: 2024-09-23 12:29:19

动态语句语法:exec\sp_executesql语法(转载)的相关文章

获取动态SQL查询语句返回值(sp_executesql)

原文:获取动态SQL查询语句返回值(sp_executesql) 在写存储过程时经常会遇到需要拼接SQL语句的情况,一般情况下仅仅是为了执行拼接后的语句使用exec(@sql)即可. 而今天的一个存储过程却需要获取动态SQL的查询结果. 需求描述:在某表中根据Id值查询Cost值(表名不确定但表结构确定,如下面的Product表) 如果不考虑获取返回值,我们这样写即可: declare @tableName varchar(50) declare @id varchar(10) declare

PHP条件语句if else/switch语法

  一.if-else语句 if...else 语句 在条件成立时执行一块代码,条件不成立时执行另一块代码 语法: 1.简单条件 if(条件){ -- } else{ -- } 例  代码如下   <?php if (date("D") == "Sat") echo " http://www.3lian.net提醒你周末了,狂欢去"; ?> 范例:本例的执行部分有三行,不可省略大括号.  代码如下   <?php if (fil

sql语句里 when then 语法 给列表数值添加颜色 求解

问题描述 sql语句里 when then 语法 给列表数值添加颜色 求解 sql语句里 when then 语法 给'已审核'这三个字 在列表显示的时候 添加颜色 谁会啊 case m.vc_status when '1' then '已审核' else '未审核' end 解决方案 sql本身没有什么颜色,要看你的数据输出到界面或者文档中,对它才能变色.具体你输出成什么,google去找对应的修改颜色的代码. 解决方案二: mysql case when 的用法: CASE value WH

sql语句未执行,语法试过没问题

问题描述 sql语句未执行,语法试过没问题 context.Request["username"]和 context.Request["password"]是前台传过来的值,抛除 if(sdr.read())里面的语句,其余全能执行,加上if里面的语句,仍然能执行,但是不能更新数据 ,log表里已经有一条数据了.sql语句测试过没问题 解决方案 结贴:update后返回一个受影响的行数,即使没有更新,也会返回一个更新了0行 解决方案二: 前面那个sql有正确执行么,

ibatis动态语句中的prepend

关于ibatis动态sql的prepend的属性,我们需要理解一下几点 select * from student <dynamic prepend="where">  <isNotNull property="id" prepend="and">   id = #id#  </isNotNull>  <isNotNull property="name" prepend="a

SQL:exec sp_executesql 用法

--這種是無效的過程 declare @sql nvarchar(500), @where nvarchar(500),@i nvarchar(64),@p nvarchar(50),@id int set @id=5 set @sql='select '+@p+'=AreaCode from AdministrativeAreaList where AreaID='+cast(@id as varchar) --select @sql exec @sql --測試結果:未能找到存储过程 ''.

ibatis动态语句

问题描述 有两个动态变量,emp_name.empNo当emp_name不为空时,拼接如下EMP_IDIN(SELECTEMP_IDFROMbase_sys_userWHEREEMP_NAMELIKE'%$emp_name$%')当empNo不为空时,拼接如下EMP_IDIN(SELECTEMP_IDFROMbase_sys_userWHEREEMP_NOLIKE'%$empNo$%')两个不为空时,拼接如下EMP_IDIN(SELECTEMP_IDFROMbase_sys_userWHEREE

在asp中如何创建动态表--调用如下sp_executesql

/* -----------------------------------    产生论坛分类目录内容表过程     -----------------------------------    */CREATE PROCEDURE sp_createnew_bbscontent    @tabname varchar(200)='',    @boardid intAS    declare @tri_inst_name nvarchar(100)    declare @tri_up_na

基于sql语句的一些常用语法积累总结_Mysql

1.当某一字段的值希望通过其它字值显示出来时(记录转换),可通过下面的语句实现:case Type when '1' then '普通通道' when '2' then '高端通道' end as Type其中"Type"是字段名,"1","2"是字段值 2.返回数据库中用户表的表单名:select name from table where type = 'u' and status >=2 3.按拼音首字母排序:select * fro