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语句 动态执行的更多相关文章

  1. 存储过程中拼接SQL语句

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

  2. oracle中查看sql语句的执行计划

    1.在pl/sql中打开cmd命令容器 2.在cmd命令窗口中输入:explain plan for select * from t; 3.查看sql语句的执行计划:select * from tab ...

  3. 在mysql存储过程中拼接sql解决in的字段类型不匹配问题

    一个朋友问我一个问题,他写了一个存储过程,并在存储过程调用了另外一个自定义的函数.该函数返回类型如'1,34,56'的字符串,并将该字符串作为存储过程的select的id条件. begin DECLA ...

  4. 存储过程中拼接sql的示例

    create or replace package body CRF_CMS_DOCTOR_PKG is --根据医院查询医生PROCEDURE P_HOSPITALBYDOCTOR_LIST ( v ...

  5. 存储过程中拼接sql并且参数化

    ALTER PROCEDURE [dbo].[proc_test] ( ) = ' order by id desc ', @userid int, @stime datetime, @etime d ...

  6. 解决存储过程中拼接的SQL字符串超长导致sql语句被截取的问题

    今天遇到了一个奇葩的问题:存储过程中的sql字符串拼接的太长,超出了分页存储过程执行sql参数的nvarchar(4000)的长度. 没办法,只能修改自己的存储过程,因为分页存储过程是不能动的. 开始 ...

  7. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

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

    问题 在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题. 解决方法 ...

  9. EF中使用SQL语句或存储过程

    EF中使用SQL语句或存储过程 1.无参数查询var model = db.Database.SqlQuery<UserInfo>("select* from UserInfoe ...

随机推荐

  1. eclipse中DDMS的LOGcat只有一列level

    拷贝来源:http://www.cnblogs.com/kobe8/p/4620785.html http://stackoverflow.com/questions/25010393/eclipse ...

  2. Highcharts 本地导出图片和PDF asp.net mvc版

    啰嗦: 现在大家利用Highcharts开发时,有时候会遇到导出的功能问题,但是highcharts默认是链接自己的服务器上进行处理,但是有时候我们会连不上他的服务器,所以我们要让他在我们的服务器上进 ...

  3. 分享 - Social.framework

    /** *  第三方分享 * *  @param void 友盟分享 *  @param shareSDK *  @param 百度分享 */ #import "ViewController ...

  4. Firebird 同一字段的多行合并为一行

    Firebird 同一字段的多行合并为一行用LIST函数类似于MYSQL的GROUP_CONCAT. 具体用法如下: SELECT  LIST(a.GG_NAME||':'||a.GG_VALUE) ...

  5. 守望先锋overwatch美服外服设置方法

    打开:C:\Users\你的用户名\AppData\Roaming\Battle.net\Battle.net.config 替换为下方内容: { "Client": { &quo ...

  6. jsp EL表达式 字符串的比较

    jsp EL表达式 字符串的比较 跟JavaScript一样,直接使用两个等于号即可:== 代码如下: <c:if test="${highLight == 'visa'}" ...

  7. 一个简单的DDraw应用程序

        阅读排行榜 1. C/C++ 笔试.面试题目大汇总(72915) 2. [STL]list基础(21718) 3. COM笔记-CoCreateInstance(14842) 4. C/C++ ...

  8. iframe的安全问题

    今天尝试在iframe中嵌入外部网站, 碰到了一些小问题. 如何让自己的网站不被其他网站的iframe引用? 我测试的时候发现我把iframe的src指定到github不起作用. 原来是它把X-Fra ...

  9. Oracle 单实例 2个service的问题

    [oracle@PD admin]$ ps -ef | grep smon oracle 1917 1 0 Aug21 ? 00:33:51 ora_smon_podinndb oracle 2265 ...

  10. 使用GDI+轻松创建缩略图

    Gdi+ 还是相当好用的. 1> Image保存图像,需要一个CLSID的参数,它可以这样获得: int   GetEncoderClsid(const   WCHAR*   format,   ...