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)
SET @sqlfilter = @sqlfilter + ' tableu.SchoolId = ' + CAST(@schoolId AS VARCHAR(50)) + ' AND'
IF(@gradeId <> -1)
SET @sqlfilter = @sqlfilter + ' tableu.GradeId = ' + CAST(@gradeId AS VARCHAR(50)) + ' AND'
IF(@cId <> -1)
SET @sqlfilter = @sqlfilter + ' tableu.ClassId = ' + CAST(@cId AS VARCHAR(50)) + ' AND'
IF(@keyWords IS NOT NULL)
SET @sqlfilter = @sqlfilter + ' tableu.TrueName like ''%' + CAST(@keyWords AS VARCHAR(50)) + '%'' AND' DECLARE @beg INT,@end INT
SET @beg = @startRowIndexId+1
SET @end = @startRowIndexId + @maxNumberRows
SET @sqlfilter = @sqlfilter + ' tableu.num BETWEEN ' +CAST( @beg AS VARCHAR(50)) + ' AND '+ CAST(@end AS VARCHAR(50)) DECLARE @sqlmain VARCHAR(max)
SET @sqlmain = ' '
SET @sqlmain = @sqlmain + ' SELECT * FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY cjs.UserName) AS num,CTA.TrueName, u.UserName, c.ClassName + '' (''+ CAST(YEAR(c.GradeUpdateTime) AS NVARCHAR(20))+''年)'' AS [ClassName],s.SchoolName,cjs.ApplyTime,g.GradeName,cjs.ApplyID,c.ClassId,g.GradeId,s.SchoolId
FROM PE_C_StudentJoinClass AS cjs
LEFT JOIN dbo.PE_SS_StudentClass AS c
ON cjs.ClassId = c.ClassId
LEFT JOIN dbo.PE_Users AS u
ON u.UserName = cjs.UserName
LEFT JOIN dbo.PE_SS_Grade g
ON g.GradeId = c.GradeId
LEFT JOIN dbo.PE_SS_School s
ON s.SchoolId = g.SchoolId
LEFT JOIN PE_Contacter CTA
ON cjs.UserName = CTA.UserName
WHERE ApplyID IN
(
SELECT
MAX(cs1.ApplyID) AS [ApplyID]
FROM PE_C_StudentJoinClass AS cs1
CROSS JOIN dbo.PE_C_StudentJoinClass AS cs2
WHERE cs2.UserName = '''+ CAST(@userName AS VARCHAR(50))+ ''' AND cs1.UserName != ''' + CAST(@userName AS VARCHAR(50))+ ''' AND cs1.ClassId = cs2.ClassId AND cs1.Status = 1
GROUP BY cs1.UserName
)
) AS tableu WHERE ' PRINT (@sqlmain + @sqlfilter)
EXEC (@sqlmain + @sqlfilter) END GO
sqlserver 存储过程中拼接sql语句 动态执行的更多相关文章
- 存储过程中拼接SQL语句
很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了.具体看如下演示代码: 代码: set ANS ...
- oracle中查看sql语句的执行计划
1.在pl/sql中打开cmd命令容器 2.在cmd命令窗口中输入:explain plan for select * from t; 3.查看sql语句的执行计划:select * from tab ...
- 在mysql存储过程中拼接sql解决in的字段类型不匹配问题
一个朋友问我一个问题,他写了一个存储过程,并在存储过程调用了另外一个自定义的函数.该函数返回类型如'1,34,56'的字符串,并将该字符串作为存储过程的select的id条件. begin DECLA ...
- 存储过程中拼接sql的示例
create or replace package body CRF_CMS_DOCTOR_PKG is --根据医院查询医生PROCEDURE P_HOSPITALBYDOCTOR_LIST ( v ...
- 存储过程中拼接sql并且参数化
ALTER PROCEDURE [dbo].[proc_test] ( ) = ' order by id desc ', @userid int, @stime datetime, @etime d ...
- 解决存储过程中拼接的SQL字符串超长导致sql语句被截取的问题
今天遇到了一个奇葩的问题:存储过程中的sql字符串拼接的太长,超出了分页存储过程执行sql参数的nvarchar(4000)的长度. 没办法,只能修改自己的存储过程,因为分页存储过程是不能动的. 开始 ...
- easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)
easyui datagrid 禁止选中行 没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...
- java动态拼接sql语句并且执行时给sql语句的参数赋值
问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 ...
- EF中使用SQL语句或存储过程
EF中使用SQL语句或存储过程 1.无参数查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoe ...
随机推荐
- SQLSERVER与C#中数据类型的对应关系
SQLSERVER与C#中数据类型的对应关系 ///<summary> ///数据库中与C#中的数据类型对照 ///</summary> ///<paramname=&q ...
- 在redis中查询一个KEY的值
写入某个key: set MPM_YYC_XTJ_0 "abcde" [set key value]
- caller和callee的区别
①.caller caller返回一个函数的引用,这个函数调用了当前的函数. 使用这个属性要注意: 1 这个属性只有当函数在执行时才有用 2 如果在javascript程序中,函数是由顶层调用的,则返 ...
- 一周一话题之四(JavaScript、Dom、jQuery全面复习总结<jQuery篇>)
-->目录导航 一. 初探Jquery 1. 介绍 2. 基础 二. Jquery操作 1. jQuery页面加载 2. 选择器 3. 操作Dom 三. Jquery进阶 1. 隐式迭代与链式编 ...
- PYTHON连MS SQL示例
先要设置WINDOWS的系统DSN的.然后才可以哟. import pyodbc conxn = pyodbc.connect('DSN=BBB; DATABASE=Northwind;UID=AAA ...
- 【Uvalive 5834】 Genghis Khan the Conqueror (生成树,最优替代边)
[题意] 一个N个点的无向图,先生成一棵最小生成树,然后给你Q次询问,每次询问都是x,y,z的形式, 表示的意思是在原图中将x,y之间的边增大(一定是变大的)到z时,此时最小生成数的值是多少.最后求Q ...
- CentOS6.5 x86_64 配置Broadcom 43XX系列 无线网卡驱动
from: http://wiki.centos.org/HowTos/Laptops/Wireless/Broadcom?action=show In order to install Broadc ...
- POJ_3685_Matrix_(二分,查找第k大的值)
描述 http://poj.org/problem?id=3685 一个n*n的矩阵,(i,j)的值为i*i+100000*i+j*j-100000*j+i*j,求第m小的值. Matrix Time ...
- 【转】Windows7 下安装 JDK 7 时版本冲突问题解决
原文网址:http://wxl24life.iteye.com/blog/1966058 自己电脑上一直用的 JDK 版本是 1.6,今天决定更新到 1.7,在安装 JDK 1.7 后,控制台输入 j ...
- Off-by-one错误
在迭代循环中,误用> < ≥ ≤符号,有可能导致循环次数多一次或者少一次,就会引发off-by-one错误,混用半开区间和闭区间时,也经常发生此类错误,解决方法是利用最小的输入值去测试代码 ...