SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集

ALTER PROCEDURE [dbo].[usp_visit_detail]
(@siteid
BIGINT,
 @Startime
VARCHAR(15),
 @Endtime
 VARCHAR(15),
 @Aflag  INT = 10,    
                     
       
 --初始值为10,非10,则表示有传入参数
 @Area   VARCHAR(20) =
‘N‘,              
-- --初始值为N,非N,则表示有传入参数
 @Nflag  INT = 10,  
                     
       -初始值为10,非10,则表示有传入参数
 @VALUE1
varchar(20) = ‘N‘            
 --初始值为N,非N,则表示有传入参数

)
AS
BEGIN
 DECLARE
@AFlag0      varchar(50),
    
     @NFlag0    
 varchar(50), 
        
 [email protected]     varchar(600),
    
     @Sqlstr    
 varchar(2000) 
        
 
  IF @AFlag =
10 
    SET @AFlag0 =
‘‘
  ELSE 
    SET
@AFlag0 = ‘ AND AFlag=‘ + CAST(@AFlag AS
VARCHAR) 

  IF @Area =
‘N‘ 
    SET @Area =
‘‘
  ELSE 
    SET
@Area = ‘ AND province=‘ + ‘‘‘‘ + @Area + ‘‘‘‘
  
     
  IF @NFlag =
10 
    SET @NFlag0 =
‘‘
  ELSE 
    SET
@NFlag0 = ‘ AND NFlag=‘ + CAST(@NFlag AS VARCHAR)        
           
  

  IF @Value1 =
‘N‘ 
    SET @Value1 =
‘‘
  ELSE 
    SET
@Value1 = ‘ AND value1=‘ + ‘‘‘‘ + @Value1 + ‘‘‘‘
  
   
   SET
@Sqlstr =  ‘SELECT     a.Intime, c.Visitornm, c.Vcount, (CASE
WHEN a.value2 = ‘+‘‘‘‘+‘‘‘‘+‘ THEN a.value1 + ‘+‘‘‘‘+‘‘‘‘+‘ WHEN a.value2 !=
‘+‘‘‘‘+‘‘‘‘+‘ THEN a.value1 +‘+ ‘‘‘‘+‘-‘+‘‘‘‘+‘ + a.value2 END) AS
source0, 
   DATEDIFF(ms,a.Intime, a.Outtime) AS
vtime, a.Pages, a.Rev1, dbo.GET_URL(a.SiteID, a.InURLID) AS inrul,
dbo.GET_URL(a.SiteID, a.OutURLID) AS outrul
FROM dbo.F_Pages_T
AS a INNER JOIN  (SELECT     VisitorID, MAX(ID) AS id FROM
dbo.F_Pages_T WHERE SiteID = ‘+‘‘‘‘+CONVERT(VARCHAR,@siteid)+‘‘‘‘+ ‘AND
day0>= ‘[email protected]+‘ AND day0<= ‘
[email protected][email protected]
[email protected]+   @Nflag0+ @Value1
  +‘ GROUP BY VisitorID) AS b ON a.ID = b.id LEFT OUTER JOIN dbo.F_Visit AS
c ON a.VisitorID = c.VisitorID‘
      
             
 
   PRINT @sqlstr
  
EXEC (@sqlstr)
END

SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集,布布扣,bubuko.com

时间: 2025-01-19 17:21:11

SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集的相关文章

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

java动态拼接sql语句并且执行时给sql语句的参数赋值

问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 1.就拿我上面的那个多条件模糊查询为例,第一步是拼接sql语句,先定义一个通用的sql语句,String sql = "select * from user where 1 = 1 ";这里添加where 1= 1是一个小技巧,方便后面sql语句的拼接. String sql = &quo

使用表达式避免拼接SQL语句

在SQL语句编写过程中,无论在存储过程中还是在程序中,有时为了使语句兼容全部情况与某字段的特殊情况,不得不拼接SQL字串 如下表 商品ID 类别ID 1 1 2 1 3 2 4 3 5 3 如果我们要写一个SQL,改SQL可通过类别ID获得该类别的商品ID,并且要求兼容传入类别ID为0时获得所有商品,我们不得不拼接SQL了 --@类别ID为传入的参数 DECLARE @Sql NVARCHAR(500) SET @Sql='SELECT * FROM 商品' IF(@类别ID!=0) SET @

SqlServer存储过程传入Table参数

今天是周日,刚好有空闲时间整理一下这些天工作业务中遇到的问题. 有时候我们有这样一个需求,就是在后台中传过来一个IList<类>的泛型集合数据,该集合是某个类的实例集合体,然后将该集合中的实例的数据一个个地插入到数据库或者更新到数据库中去.一开始我想到的方法是拼接字符串,然后通过存储过程对接收到的字符串进行截取,再一个个地插入或者更新到数据库中去,这是最原始的方法,不过过程会比较复杂,想到这就头疼.后来查找发现说SqlServer2008中为存储过程添加了一个新特性,可以传递表类型的参数,既然

SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号

SQL Server之 (四) ADO增删查改  登录demo  带参数的sql语句  插入自动返回行号 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.什么是ADO.NET ADO.NET是一组类库,这组类库可以让我们通过程序的方式访问数据库,并以各种方式操作存储在其中的数据; ADO.NET是基于.NET FrameWork,与.NET FrameWork类库的其余部分是高度集成的 2.连接数据库的步骤 ①创建连接字符串 Data Source=XXX-PC; Initial Catal

java用字符串拼接SQL语句的特殊字符转义问题

在实际的项目开发中,往往会根据用户在界面的文本框中输入的信息,去数据库中做模糊查询.如果使用的是原始的JDBC和SQL,往往需要对用户的输入进行转义,避免生成的sql语法错误,或者防止SQL注入.比如对输入的%和_和',就需要进行转义,因为这3个字符是SQL的特殊字符,如果不处理会导致sql出错或者是查询数据不正确. 假如有这样1个查询请求,模糊查询标题中包含a%b_cc'd的记录,正确的sql应该是下面这样的: select * from t_sch_work_info t where t.t

在JDBC中使用带参数的SQL语句

ADO.Net中,支持带参数的SQL语句,例如:Select * from Tables where [email protected],其中@column1为SQL参数,使用起来非常方便,而JDBC中没有找到此功能,感觉有点不便, 于是想自己实现一个.今天正好看见csdn中有一篇http://blog.csdn.net/wallimn/article/details/3734242 文章,有些感触,于是把自己的实现也写出来. 我的思路: 1: 在SQL语句中找到以@开始,以" ",

通过带参数的Sql语句来实现模糊查询(多条件查询)

#region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books"); List<string> listWheres = new List<string>(); List<SqlParameter> listParams = new List<SqlParameter>(); if (txtBookName.Text.T

SQL语句执行与结果集的获取

title: SQL语句执行与结果集的获取 tags: [OLEDB, 数据库编程, VC++, 数据库] date: 2018-01-28 09:22:10 categories: windows 数据库编程 keywords: OLEDB, 数据库编程, VC++, 数据库,执行SQL, 获取结果集 --- 上次说到命令对象是用来执行SQL语句的.数据源在执行完SQL语句后会返回一个结果集对象,将SQL执行的结果返回到结果集对象中,应用程序在执行完SQL语句后,解析结果集对象中的结果,得到具