row num-关于设置参数值和直接拼接SQL语句问题

问题描述

关于设置参数值和直接拼接SQL语句问题

DECLARE @SysBranchSysNo int,@C1SysNo int,@RepeatNum INT
SET @SysBranchSysNo=1;
SET @C1SysNo=1073;
SET @RepeatNum=1
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Quantity desc ) AS DATA_ROW_NUM, * FROM (
SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY SysNo,SysBranchSysNo ORDER BY totalNum) as RepeatNum,* FROM dbo.v_product) Product
WHERE SysBranchSysNo=@SysBranchSysNo
AND C1SysNo=@C1SysNo AND RepeatNum=@RepeatNum AND onlineqty>0 ) A) B WHERE DATA_ROW_NUM BETWEEN 181 AND 200;
为什这条语句执行结果是没数据,如果把WHERE SysBranchSysNo=@SysBranchSysNo改成WHERE SysBranchSysNo=1这样的执行结果就有值了。

解决方案

找到原因了,改成这样就行了
DECLARE @SysBranchSysNo int,@C1SysNo int,@RepeatNum INT
SET @SysBranchSysNo=1;
SET @C1SysNo=1073;
SET @RepeatNum=1
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Quantity desc ) AS DATA_ROW_NUM, * FROM (
SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY SysNo,SysBranchSysNo ORDER BY totalNum) as RepeatNum,* FROM dbo.v_product
WHERE SysBranchSysNo=@SysBranchSysNo
) Product
WHERE C1SysNo=@C1SysNo AND RepeatNum=@RepeatNum AND onlineqty>0 ) A) B WHERE DATA_ROW_NUM BETWEEN 181 AND 200;

时间: 2024-10-31 19:28:24

row num-关于设置参数值和直接拼接SQL语句问题的相关文章

mssql-存储过程不让拼接SQL语句

问题描述 存储过程不让拼接SQL语句 公司DBA不允许创建的存储过程中有拼接SQL语句的行为,请问,该怎么解决?说是这样做有风险,说我非要用的话,可以签一份风险协议,出了问题我负责之类的.请问:各位在多条件查询这种情况下,存储过程都是怎么写的?有不拼接又省事的办法吗?另外,这个风险难道微软没有提供解决方案吗? 解决方案 真正的风险, 不在于拼SQL, 而是输入值没有参数化. 比如: delare @sql nvarchar(max), @name nvarchar(20) set @name='

多条件查询拼接sql语句如何防止sql注入

问题描述 假如有四个条件可以任意输入1到4个条件取交集求解 解决方案 解决方案二:引用楼主abc12346579的回复: 假如有四个条件可以任意输入1到4个条件取交集求解 你的"任意输入条件"是什么意思?如果说随便输入sql,那么这其实根本不需要注入,你都随便让人家写代码了,还要想什么"注入"方式干什么?直接干就行了.解决方案三:你要是让人家输入sql,那就相当于超市敞开大门让顾客把东西搬回家,再来讨论"如何防止盗窃"就没有意义了.解决方案四:在

存储过程中拼接SQL语句

很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author:  yy -- Create date: 2012-1-17 -- Description: 存储过程S

C#拼接SQL语句 用ROW_NUMBER实现的高效分页排序_C#教程

如果项目中要用到数据库,铁定要用到分页排序.之前在做数据库查询优化的时候,通宵写了以下代码,来拼接分页排序的SQL语句 复制代码 代码如下: /// <summary> /// 单表(视图)获取分页SQL语句 /// </summary> /// <param name="tableName">表名或视图名</param> /// <param name="key">唯一键</param> //

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

CPQuery 解决拼接SQL的新方法_MsSql

我一直都不喜欢在访问数据库时采用拼接SQL的方法,原因有以下几点: 1. 不安全:有被SQL注入的风险. 2. 可能会影响性能:每条SQL语句都需要数据库引擎执行[语句分析]之类的开销. 3. 影响代码的可维护性:SQL语句与C#混在一起,想修改SQL就得重新编译程序,而且二种代码混在一起,可读性也不好. 所以我通常会选择[参数化SQL]的方法去实现数据库的访问过程,而且会将SQL语句与项目代码(C#)分离开. 不过,有些人可能会说:我的业务逻辑很复杂,Where中的过虑条件不可能事先确定,因此

CPQuery 解决拼接SQL的新方法

我一直都不喜欢在访问数据库时采用拼接SQL的方法,原因有以下几点: 1. 不安全:有被SQL注入的风险. 2. 可能会影响性能:每条SQL语句都需要数据库引擎执行[语句分析]之类的开销. 3. 影响代码的可维护性:SQL语句与C#混在一起,想修改SQL就得重新编译程序,而且二种代码混在一起,可读性也不好. 所以我通常会选择[参数化SQL]的方法去实现数据库的访问过程,而且会将SQL语句与项目代码(C#)分离开. 不过,有些人可能会说:我的业务逻辑很复杂,Where中的过虑条件不可能事先确定,因此

java-JAVA后台动态拼接查询语句

问题描述 JAVA后台动态拼接查询语句 要重做一个系统,以前那个系统因为查询效率非常低下,所以要重做. 查询需求比较蛋疼:查询的字段,和查询条件都是要动态拼接的.因为之前的做法是把所有要显示的字段和查询的条件都写在一个视图里,查询的时候直接拼接where 条件就行了.基础视图查询了太多的字段(很多字段还是用了函数),关联了太多的表,倒是几乎没子查询. 现在他们想把基础视图简化,只查列表显示的常用字段,然后查询时去动态的拼表连接JOIN和WHERE条件,我想了半天也没想出来应该怎么做.主要就是,查

column-QML中对Column和Row用anchors设置位置的时候总是出现下面的错误

问题描述 QML中对Column和Row用anchors设置位置的时候总是出现下面的错误 比如:Column { id: layout anchors { left: parent.left top: parent.top } } 就是类似这样的设置老是报下面相关的错误信息,但是位置设置确实起了作用,想知道为什么会这样,求高人指点,谢谢. QML Column: Cannot specify top, bottom, verticalCenter, fill or centerIn anchor