在编写sql中,经常需要对sql进行预处理,动态拼接字符串,那么要获取在这预处理之后返回的的某个值并且赋值,传入参数的语法

  1. USE [OA]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[usp_oa_UserMessageProve_Update] Script Date: 12/02/2014 10:45:19 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. /*
  9. 功能:更新用户证明数据,更新用户证明状态
  10. 2014.10.28 16:14 am
  11. */
  12. ALTER PROC [dbo].[usp_oa_UserMessageProve_Update]
  13. @msgid VARCHAR(10)
  14. ,@userid VARCHAR(10)
  15. ,@state VARCHAR(10)
  16. ,@remark VARCHAR(200)
  17. ,@filepath VARCHAR(200)
  18. AS
  19. begin
  20. DECLARE
  21. @tablename VARCHAR(100)
  22. ,@provered INT
  23. ,@sqlstr NVARCHAR(1000)
  24. ,@provepath VARCHAR(1000)
  25. ,@NOT_PROVE INT --未证明
  26. ,@CANNOT_PROVE INT --无法完成
  27. ,@HAS_PROVE INT --已证明
  28. --无法证明更新
  29. SELECT @NOT_PROVE=56,@CANNOT_PROVE=58,@HAS_PROVE=57
  30. select @tablename=tablename from ADM_F_GETUSERREADTABLE (@userid)
  31. IF @state = '1' -- state =1 执行无法证明操作
  32. BEGIN
  33. SET @sqlstr = 'update '+@tablename+' set proveremark='''+@remark+''',provered='+CAST(@CANNOT_PROVE AS VARCHAR(10))
  34. + ' where UserID='+@userid + ' and MessageID='+@msgid
  35. EXEC(@sqlstr)
  36. END
  37. ELSE IF @state = '2' -- state = 2 执行 按钮证明操作
  38. BEGIN
  39. SET @sqlstr = 'update '+@tablename+' set provered='+CAST(@HAS_PROVE AS VARCHAR(10))
  40. + ' where UserID='+@userid + ' and MessageID='+@msgid
  41. EXEC(@sqlstr)
  42. END
  43. ELSE IF @state = '3' -- state = 3 执行 文件路径更新操作
  44. BEGIN
  45. SET @sqlstr = 'update '+@tablename+' set provered='+CAST(@HAS_PROVE AS VARCHAR(10))+',provepath = isnull(provepath,'''')+ '''+@filepath
  46. +','' where UserID='+@userid + ' and MessageID='+@msgid
  47. EXEC(@sqlstr)
  48. END
  49. ELSE IF @state = '4' -- state = 4 执行文件删除更新操作
  50. BEGIN
  51. SET @sqlstr = 'select @provepath=provepath from '+@tablename+' where UserID='+@userid + ' and MessageID='+@msgid
  52. EXEC sp_executesql @sqlstr,
  53. N'@provepath VARCHAR(1000) output',
  54. @provepath OUTPUT
  55. SET @provepath= REPLACE(@provepath,@filepath+',','')
  56. SET @sqlstr = 'update '+@tablename+' set provepath = '''+@provepath+''''
  57. IF @provepath = ''
  58. BEGIN
  59. SET @sqlstr +=',provered='+CAST(@NOT_PROVE AS VARCHAR(10))
  60. END
  61. SET @sqlstr +=' where UserID='+@userid + ' and MessageID='+@msgid
  62. PRINT @sqlstr
  63. EXEC(@sqlstr)
  64. END
  65. END


sqlserver 针对预处理sql传入参数的处理方式的更多相关文章

  1. django模板传入参数的处理方式与反向生成url

    前端模板传入参数的处理方式 1.传入单个参数: 前端使用href="/sel-{{ row.0 }}.html, url使用url(r'sel-(.+).html',home.index), ...

  2. mysql 5.7.20 动态sql 传入参数

    drop procedure test; delimiter ;; CREATE procedure test() -- 取动态sql的值 -- 目前只测试出,在 where 后面, 可以用 ?,类似 ...

  3. sql 传入参数为逗号分隔的字符串处理方法

    写了个存储过程,中间用到了类似这种写法 Select * From User Where ID In('1,2,3') 其中'1,2,3'是从外面传进来的参数,就这样执行报错:'1,2,3'转换为in ...

  4. [ Database ] [ Sybase ] [ SQLServer ] sybase 與SQL Server的界接方式

    目前我們有個專案Server A安裝了 SQL Server 2012,有個需求需要連線到另外一台Server B上的 Sybase 12.5的view, 先前試過了很多方法都無法連通.主要的原因是因 ...

  5. C#中SQL语句参数写法

    OracleConnection oc=new OracleConnection("data source=osserver;User Id=****;password=**"); ...

  6. MyBatis传入参数为集合、数组SQL写法

    参考:http://blog.csdn.net/small____fish/article/details/8029030 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合 ...

  7. 动态sql语句和动态传入参数个数

    1.可以将要传入的几个参数封装成一个实体类,然后将实体类作为一个参数传入到相应的方法中,这时候就需要这sqlMapper.xml文件中对传入的字段利用<if test=""& ...

  8. SQLSERVER procedure 传入参数为DataTable类型 C#该怎么写

    以上为数据库中存储过程传入参数为table类型 table类型在数据库中存在为: 最后在C#实现方式为:

  9. 预处理(防止sql注入的一种方式)

    <!--- 预处理(预编译) ---><?php/* 防止 sql 注入的两种方式: 1. 人为提高代码的逻辑性,使其变得更严谨,滴水不漏. 比如说 增加判断条件,增加输入过滤等,但 ...

随机推荐

  1. HDU 3974 Assign the task(dfs时间戳+线段树成段更新)

    题意:给定点的上下级关系,规定假设给i分配任务a.那么他的全部下属.都停下手上的工作,開始做a. 操作 T x y 分配x任务y,C x询问x的当前任务: Sample Input 1 5 4 3 3 ...

  2. 谷歌浏览器禁止window.close的问题

    当一个窗口不是通过window.open或者window.showModalDialog打开的时候,调用JS的window.close() 谷歌浏览器会提示如下警告,并拒绝执行 Scripts may ...

  3. linux FTP配置详解

    一.vsftpd说明: LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 访问 ...

  4. 云ci自动构建实例 最佳实践

  5. 实现ScrollviewSupportMaxHeight

    public class ScrollviewSupportMaxHeight extends ScrollView {         public final int MAX_HEIGHT = 1 ...

  6. 如何使php页面中不再出现NOTICE和DEPRECATED的错误提示

    在php.ini配置文件中修改: error_reporting=E_ALL & ~E_NOTICE & ~E_DEPRECATED 亲测有效,拿去用吧

  7. ios 中的tintColor

    在iOS 7后,UIView新增加了一个tintColor属性,这个属性定义了一个非默认的着色颜色值,其值的设置会影响到以视图为根视图的整个视图层次结构.它主要是应用到诸如app图标.导航栏.按钮等一 ...

  8. C#:小写金额转换为大写

    #region 小写金额转换为大写 public static string CurrToChnNum(double Currnum) { string sResult = ""; ...

  9. java 又一次抛出异常 相关处理结果演示样例代码

    java 又一次抛出异常 相关处理结果演示样例代码 package org.rui.ExceptionTest; /** * 又一次抛出异常 * 在某些情况下,我们想又一次掷出刚才产生过的违例,特别是 ...

  10. python中杂乱问题

    1 字符串格式化中的格式指定 format_spec ::= [[fill]align][sign][#][][width][,][.precision][type] fill ::= <any ...