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 --測試結果:未能找到存储过程 ''.…
EXEC命令有两个用法: 1.执行一个存储过程,或者执行一个动态批次. 2.批次是一个内容为SQL语句的字符串. 举列子: 1.exec name_proc :没有参数 exec name_proc ‘ ’,4 ,‘ ’:有参数 2.exec('select * from test')…
exec执行sql时字符串时,不能给变量赋值,如果要在sql里给变量赋值,请用EXEC SP_EXECUTESQL 示例: 通过 SP_EXECUTESQL 的第2个参数来定义有哪些参数 输出的加OUTPUT 后面的参数为执行的时候,具体参数的数据.输出的加OUTPUT BEGIN ); ); SET @Sql = 'SELECT @name = name FROM test_dysql WHERE id=1'; PRINT @Sql; EXEC SP_EXECUTESQL @Sql, N'@n…
http://www.cnblogs.com/goody9807/archive/2010/10/19/1855697.html 动态sql语句基本语法 1   :普通SQL语句可以用Exec执行   eg:       Select   *   from   tableName Exec( 'select   *   from   tableName ') Exec   sp_executesql   N 'select   *   from   tableName '         --…
本文转自:http://www.cnblogs.com/hnsdwhl/archive/2011/07/23/2114730.html 当需要根据外部输入的参数来决定要执行的SQL语句时,常常需要动态来构造SQL查询语句,个人觉得用得比较多的地方就是分页存储过程和执行搜索查询的SQL语句.一个比较通用的分页存储过程,可能需要传入表名,字段,过滤条件,排序等参数,而对于搜索的话,可能要根据搜索条件判断来动态执行SQL语句. 在SQL Server中有两种方式来执行动态SQL语句,分别是exec和s…
今天SqlServer数据库出现了访问不通的情况,抓紧重启了下服务,让大家先恢复使用,然后我开了 SQL Server Profiler 看看是不是存在性能问题SQL,然后就发现一批这样的SQL,看reads到了6万.2万的级别,这个SQL查询的结果也就几条,这reads明显存在问题 把SQL改写下试试, 可以看到,SQL很快的,reads在个位数,确认存在问题无疑. 上面自动生成的SQL与改写的SQL对比,可以看到写法最大的区别就是 exec sp_executesql ,初步怀疑是这个引起的…
今天遇到了一个难题 就是把 一个拼接sql语句 的返回值 赋值给一个变量 经研究 要用sp_executeSql这个存储过程 据说是从sql 2005才开始有的 代码如下: declare @str nvarchar(1000) declare @fld varchar(20) declare @tbl varchar(20) declare @MaxID varchar(20) set @fld='id' set @tbl ='test' set @str ='select @maxID=is…
declare @sql nvarchar(max)declare @nu int set @sql='SELECT * FROM [FMTest].[dbo].[FM_Radio_Station]'set @sql='SELECT @nu=count(0) from('+@sql+')aa'EXEC sp_executesql @sql,N'@nu AS INT OUTPUT',@nu OUTPUTSELECT @nu…
今天遇到了一个难题 就是把 一个拼接sql语句 的返回值 赋值给一个变量 经研究 要用sp_executeSql这个存储过程 据说是从sql 2005才开始有的 代码如下: declare @str nvarchar(1000) declare @fld varchar(20) declare @tbl varchar(20) declare @MaxID varchar(20) set @fld='id' set @tbl ='test' set @str ='select @maxID=is…
:普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N :字段名,表名,数据库名之类作为变量时,必须用动态SQL eg: ) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值F…
传递多个参数 https://stackoverflow.com/questions/28481189/exec-sp-executesql-with-multiple-parameters https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-executesql-transact-sql?view=sql-server-2017 DECLARE @IntVariable in…
execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如:  exec sp_executesql @sql, N'@count int out,@id varchar(20)', @cou out ,@id @sql为拼成的动态sql N'@count int out,@id varchar(20)'为拼成的动态sql内的参数列表 @cou out,@i…
变量的声明,赋值,打印(declare是pl/sql里面的用法 variable是sql*plus里面的用法,variable相当于一个sql*plus环境的全局变量,declare里定义的是pl/sql中的局部变量) ):'; begin dbms_output.put_line(job1); end; 在pl/sql里面执行存储过程,不需要关键字exec,所有执行语句必须在begin....end里面,每条语句要有分号分隔. create table a(a date); select *…
SQL语句---nvl 用法   一NVL函数是一个空值转换函数 NVL(表达式1,表达式2) 如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值. 该函数的目的是把一个空值(null)转换成一个实际的值.其表达式的值可以是数字型.字符型和日期型.但是表达式1和表达式2的数据类型必须为同一个类型. 对数字型: NVL( comm,0); 对字符型 NVL( TO_CHAR(comm), 'No Commission') 对日期型 NVL(hiredate,' 31-DEC-99…
SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数:select day(cl_s_time) as '日' from class  --返回天select '月'=month(cl_s_time) from class  --返回月select '年'=year(cl_s_time) from class  --返回年 --DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量:select date…
SQL 中ROLLUP 用法 ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集. 下面是 CUBE 和 ROLLUP 之间的具体区别: CUBE 生成的结果集显示了所选列中值的所有组合的聚合. ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合. ROLLUP 优点: (1)ROLLUP 返回单个结果集,而 COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性. (2)ROLLUP 可以在服务器游标中使用,而 COMPUTE BY 则不可以…
Declare @i int, @projectCount int ) --参数 ) ) ) ) ) ) --循环变量起始 --得到所有的项目 select @projectCount = count(projectid) from t_project_manage print @projectcount --开始循环每一行 while @i < @projectCount begin Set @Sqlstr = 'Select top 1 @projectid = projectid, @pr…
原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%8F%8A%E5%A4%9A%E8%A1%A8%E8%BF%9E%E6%8E%A5/ 标准SQL语言的用法 SQL语言是目前最通用的关系数据库语言.ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品…
mybatis动态SQL标签的用法   动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号.利用动态 SQL 这一特性可以彻底摆脱这种痛苦. 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情形,这种语言可以被用在任意的 SQL 映射语句中. 动态 SQL 元…
SQL%NOTFOUND 是一个布尔值.与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true.否则返回false.这样的语句在实际应用中,是非常有用的.例如要update一行数据时,如果没有找到,就可以作相应操作.如: begin update table_name set salary = 10000 where emp_id = 10; if sql%notfound then insert into…
SQL%NOTFOUND 是一个布尔值.与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true.否则返回false.这样的语句在实际应用中,是非常有用的.例如要update一行数据时,如果没有找到,就可以作相应操作.如: begin update table_name set salary = 10000 where emp_id = 10; if sql%notfound then insert into…
sql的游标用法举例 ), ) Declare authors_cursor Cursor For Select Name,TrueName From Account Open authors_cursor Fetch Next From authors_cursor INTO @Name, @TrueName Begin ),@@FETCH_STATUS) Fetch Next From authors_cursor INTO @Name, @TrueName End Close author…
参考:SQL语句exists用法,Sql语句中IN和exists的区别及应用 现在有三张表 学生表S: sno ,sname 课程表C:cno ,cname 学生选课表SC: sno ,cno 查询选了所有课程的学生信息 SELECT * FROM S T1 FROM C T2 FROM SC T3 WHERE T1.SNO = T3.SNO AND T2.CNO = T3.CNO)) 我理解就是,上面的语句是查询不存在每门课都没有选的学生,那就是选择了所有课程的学生.上面的语句使用了两个NOT…
1.增加字段     alter table docdsp     add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME DROP COLUMNcolumn_NAME3.修改字段类型     ALTER TABLE table_name     ALTER COLUMNcolumn_name new_data_type4.sp_rename 改名     EXEC sp_rename '[dbo].[Table_1].[filedName1]…
存储过程其实就是已预编译为可执行过程的一个或多个SQL语句. 通过调用和传递参数即可完成该存储过程的功能. 前面有介绍过存储过程的一些语法,但是没有详细示例,今天我们来一起研究一下存储过程. 提高性能 SQL语句在创建过程时进行分析和编译. 存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析.优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时便可节省此开销. 2降低网络开销 存储过程调用时只需用提供存储过程名和必要的参数信息,从而可降低网络的流量. 3便于进行代码移植…
---查询当前数据库一共有多少张表 ) from sysobjects where xtype='U' ---查询当前数据库有多少张视图 ) from sysobjects where xtype='V' ---查询当前数据库 有多少个存储过程 ) from sysobjects where xtype='P' -- row_number()函数用法 row_number() over (order by cloumn) from tableName select ROW_NUMBER() ov…
sql创建临时表http://www.cnblogs.com/jeffwongishandsome/archive/2009/08/05/1526466.html sqlserver更改表名 EXEC sp_rename 'SNS_WS_EXCELLENT_DETAIL','SNS_WS_USER_EXCELLENT_DETAIL' 表变量和临时表http://www.cnblogs.com/CareySon/archive/2012/06/11/2544835.html 关于SQL中CTE(公…
前提,需要本地安装ORACLE 客户端 控制文件 cms.ctl load dataCHARACTERSET UTF8infile 'oracle.txt'APPEND INTO TABLE JR fields terminated by '|'(BUKRS,LONNO,WAERS,BLDAT,BUDAT,SHKZG,DLCOD,HKONT,FPGRP,FPNAM,LONPR,WRBTR,ECNMA,DLNAM,EVTCD,SEVTC,SEVTD,CITYC,CITY,LONTP,PAYER,R…
修改表中已有的字段属性 ALTER TABLE 表名 ALTER COLUMN 字段名 varchar(500) --sqlserver建表表时设置字段的默认值 create table 表(id int,name varchar() default '张三',age int) --添加字段时设置字段的默认值 alter table 表 add sex ) default '男' --为表中现有的字段设置默认值 alter table 表 add constraint DF_age_表 ) fo…
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎.通常可以在SELECT INTO.FETCH INTO以及RETURNING INTO子句中使用BULK COLLECT.本文将逐一描述BULK COLLECT在这几种情形下的用法. 一.BULK COLLECT批量绑定的示例 --下面的示例中使用了BULK COLLECT将得到的结果集绑定到记录变量中         DECLARE     TYPE emp_rec_typ…