zoukankan      html  css  js  c++  java
  • sqlserver 针对预处理sql传入参数的处理方式



    在编写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

  • 相关阅读:
    使用littleTools简化docker/kubectl的命令
    (上)python3 selenium3 从框架实现学习selenium让你事半功倍
    一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!
    VxLAN协议详解
    深入理解大数据之——事务及其ACID特性
    深入理解大数据架构之——Lambda架构
    JQCloud: 一个前端生成美化标签云的简单JQuery插件
    详解Java中的final关键字
    OpenDaylight虚拟租户网络(VTN)详解及开发环境搭建
    使用Pelican在Github(国外线路访问)和Coding(国内线路访问)同步托管博客
  • 原文地址:https://www.cnblogs.com/signheart/p/6595440.html
Copyright © 2011-2022 走看看