• 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

  • 相关阅读:
    [转]CentOS安装crontab及使用方法胡益兵
    Cython: CExtensions for Python
    freetds在UBUNTU下的安装
    用python写hiveclient 改善 ITeye技术网站
    Linux下连接MS Sql server 使用ODBC/FreeTDS组合(详细)_徒步旅行者的空间_百度空间
    现代软件构建系统的使用 CMake简介
    The Ex CS Grad Student: Running HQL from Python without using the Hive Standalone Server
    muduo 与 boost asio 吞吐量对比
    cmake与autoconf+automake的对比
    通过枚举返回指定字符结果[有时,好的程序就是一种规范,一种对事物的理解和认识,一种层次]
  • 原文地址:https://www.cnblogs.com/signheart/p/6595440.html
Copyright © 2020-2023  润新知