`
wsql
  • 浏览: 11775991 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

存储过程中拼接SQL语句

 
阅读更多

很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了。具体看如下演示代码:

代码:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author:		yy
-- Create date: 2012-1-17
-- Description:	存储过程SQL字符串拼接示例
-- =============================================
CREATE PROCEDURE [dbo].[Test]
	@FileName varchar(10), --字段名
	@Operator varchar(1), --操作符
	@FileValue  varchar(10) --字段值
AS 
	DECLARE @TempSql varchar(100) --临时存放sql语句
BEGIN
	set @TempSql= 'select * from Comment where ' + @FileName + @Operator + char(39) + @FileValue + char(39) --拼接sql字符串,char(39)为单引号
	execute(@TempSql) --执行sql字符串
END
测试:

execute Test 'newsid','>',4

在这解释一下“ALTERPROCEDURE [dbo].[Test]”至“AS”之间的代码和“AS”至“BEGIN”之间的代码有什么区别,像我这种SQL新手应该会有疑问:为什么@TempSql要定义在“AS”至“BEGIN”之间?因为,“AS”至“BEGIN”之间定义的为临时变量,前边必须加DECLARE,和其他语言中普通变量的使用方法相同;而“ALTER PROCEDURE [dbo].[Test]”至“AS”之间定义的是存储过程被调用时传入的必要参数,必须在调用的时候就赋值,不可以加DECLARE,可以理解为字符常量,一旦调用时被赋值,就再无法改变,就上边例子来说,类似@FileName=’xxx’的写法是错误的。因为@TempSql只是用来接受SQL语句的临时变量,没有初值,但必须接受值,所以要定义在“AS”至“BEGIN”之间。



分享到:
评论

相关推荐

    SqlServer存储过程实现及拼接sql的注意点

     其实就是很简单的一个SQL语句:  update table1 set field1=value1,field2 = value2 where id = id  我写成什么样子了呢?大家且看:  declare @tableName nvarchar(50),  @field1 int,  @field2 ...

    MySQL存储过程中实现执行动态SQL语句的方法

    本文实例讲述了MySQL存储过程中实现执行动态SQL语句的方法。分享给大家供大家参考。具体实现方法如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE set_col_value -> (in_table VARCHAR(128), -...

    mybatis 动态sql及参数传递

    在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...

    存储过程拼接字符串

    用sql语句拼接字符串

    多种 数据库通用类 通用sql语句拼接 通用各种数据库功能的操作

    多种 数据库通用类 通用sql语句拼接 通用各种数据库功能的操作

    oracle 存储过程中某入参是逗号分隔,并且参数要使用在in过滤语句中

    oracle存储过程中入参是逗号分隔,并且参数要使用在in过滤语句中查询数据。处理的方法与实现

    C#防SQL注入代码的三种方法

     一:丢弃SQL语句直接拼接,虽然这个写起来很快很方便。  二:如果用SQL语句,那就使用参数化,添加Param  三:尽可能的使用存储过程,安全性能高而且处理速度也快  四:屏蔽SQL,javascript等注入(很是主要的)...

    Sql通用查询存储过程

    Sql通用查询存储过程,通过拼接sql语句,传入参数,获得通用的目的。

    Oracle,SQl,MySql实现分页查询

    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为...

    精通sql结构化查询语句

    1.5 SQL开发环境 1.5.1 SQL环境介绍 1.5.2 SQL的层次结构 1.5.3 SQL环境中的对象 1.5.4 SQL环境中的程序系统 1.6 SQL语句基础 1.6.1 SQL常量 1.6.2 SQL表达式 1.6.3 SQL数据类型 1.6.4 注释符 1.6.5 批处理 1.6.6 ...

    CPQuery 解决拼接SQL的新方法

    所以我通常会选择【参数化SQL】的方法去实现数据库的访问过程,而且会将SQL语句与项目代码(C#)分离开。 不过,有些人可能会说:我的业务逻辑很复杂,Where中的过虑条件不可能事先确定,因此不拼接SQL还不行。 ...

    SQL_Sever数据库语句大全.zip

    具体SQL语句实例如下 获取当前日期的星期 获取某个字段排序的行号 获取数据库所有表和视图的信息 获取月份的月初月末时间 禁用启用触发器 判断是否存在视图(创建视图) 启用服务器配置功能权限 求Avg平均值 求max...

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别.doc

    如果只更改了语句中的参数值,则 sp_executesql 可用来代替存储过程多次执行 Transact-SQL 语句。因为 Transact-SQL 语句本身保持不变,仅参数值发生变化,所以 SQL Server 查询优化器可能重复使用首次执行时所生成...

    mysql存储过程 在动态SQL内获取返回值的方法详解

    MySql通用分页存储过程过程参数 代码如下:p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4000),p_order varchar(100),p_pageindex int,p_pagesize int... #拼接查询总记录的SQL语句 set v_sqlcounts

    MYsql 数据库0基础SQL语句实战精讲.docx

    2、编写事务需要的sql语句(1条或多条) 56 3、结束事务 56 14. 如何删除索引 57 1 查出该表有哪些索引,索引名-->集合 57 2 如何循环集合 57 3 如何让mysql执行一个字符串 57 15. SQL优化讲解 58 16. 流程结构控制...

    oracle查询分页条件通用存储过程

    oracle数据库的查询分页加条件和排序的通用型存储过程,通过将表名以参数的形式传入到存储过程中做到多表通用,也可以是多表关联的sql语句 将其看作一个表也能调用该存储过程,分页只需要传与页数,和每页显示的行数...

    存储过程的分页方案比拼

    分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用

    Oracle数据库表定时备份表 表名动态拼接时间戳存储过程

    1、备份Oracle数据库表时添加动态时间戳,解决了ORA-00922: missing or invalid option 错误。 2、备份表结构和数据,还备份索引、序列... 8.1、P_TIMER_BAK_TABLE定时备份表 表名动态拼接时间戳.sql 8.2、Readme.txt

    SQL查询安全性及性能优化

    首先可以帮助我们查看SQL语句是否利用到索引,比如很复杂的SQL语句中有些用到索引,但是执行计划中却没有索引查找,我们就可以分析相应的原因 然后我们可以对比不同的执行计划,比如达到同样效果,两个开发人员...

    SqlServer使用 case when 解决多条件模糊查询问题

    二是在数据库的存储过程中使用动态的SQL语句。其本质也是拼接SQL字符串,不过是从程序端转移到数据库端而已。 这两种方式的缺点是显而易见的:一是当多个条件每个都可为空时,要使用多个if语句进行判断;二是拼接的...

Global site tag (gtag.js) - Google Analytics