当前位置:Gxlcms > 数据库问题 > SqlServer自定义函数Function中调用with as

SqlServer自定义函数Function中调用with as

时间:2021-07-01 10:21:17 帮助过:107人阅读

  1. SET QUOTED_IDENTIFIER ON

 标识符可以由双引号分隔,而文字必须由单引号分隔

  1. SET QUOTED_IDENTIFIER OFF

 标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。

  1. SET NOCOUNT ON --返回受影响的行数
  1. SET DATEFIRST 1 --定义日期周一开始

 

  1. SET ANSI_NULLS ON

 在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE

  1. 如果 ColumnA 包含 Null 值,则 ColumnA = NULL 之类的比较操作会返回 TRUE;<br>如果 ColumnA 除了包含 NULL 外还包含某些值,则这类比较操作将返回 FALSE。<br>比较计算结果为 NULL 的两个表达式也会返回 TRUE。<br>SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,<br>即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。<br>即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。<br>
  2. 当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于
  3. (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE
  4. column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE
  5. column_name <> NULL 的 SELECT
  6. 语句返回列中包含非空值的行。此外,使用 WHERE column_name
  7. <> XYZ_value 的 SELECT 语句返回所有不为
  8. XYZ_value 也不为 NULL 的行。<br><br>
  1. CREATE FUNCTION dbo.GetTargetSummaryRefNew
  2. (
  3. @TargetGroupList dbo.GuidList READONLY
  4. )RETURNS
  5. @ TABLE(
  6. TargetDetailID NVARCHAR(36)
  7. ,pTargetID NVARCHAR(36)
  8. ,pTargetName NVARCHAR(256)
  9. ,sTargetID NVARCHAR(36)
  10. ,sTargetName NVARCHAR(256)
  11. ,TargetGroupID NVARCHAR(36)
  12. ,pSummaryType NVARCHAR(64)
  13. ,ConversionValue DECIMAL(18,8)
  14. ,pToTargetID NVARCHAR(36)
  15. ,pIsCalculated INT
  16. )
  17. AS
  18. BEGIN
  19. WITH v_targetdetail(ID,ParentID,TargetID,TargetName,TargetGroupID,ConversionValue,ToTargetID,IsCalculated,IsLeaf,IDFullPath,IsDisplay)
  20. AS
  21. (SELECT p.ID
  22. ,p.ParentID
  23. ,ISNULL(p.TargetID,p.ID) TargetID
  24. ,p.Name TargetName
  25. ,p.GroupID TargetGroupID
  26. ,p.ConversionValue
  27. ,p.ToTargetID
  28. ,p.IsCalculated
  29. ,p.IsLeaf
  30. ,CAST(p.ID AS NVARCHAR(max)) IDFullPath
  31. ,p.IsDisplay
  32. FROM ToBusinessTargetGroupDetail2(NOLOCK) p
  33. INNER JOIN @TargetGroupList p1 ON p1.[GUID]=p.GroupID
  34. WHERE p.ParentID IS NULL OR p.IsReported=0
  35. UNION ALL
  36. SELECT p.ID
  37. ,p.ParentID
  38. ,ISNULL(p.TargetID,p.ID) TargetID
  39. ,p.Name TargetName
  40. ,p1.TargetGroupID
  41. ,p.ConversionValue
  42. ,p.ToTargetID
  43. ,p.IsCalculated
  44. ,p.IsLeaf
  45. ,CAST(p1.IDFullPath+‘.‘+p.ID AS NVARCHAR(max)) IDFullPath
  46. ,p.IsDisplay
  47. FROM ToBusinessTargetGroupDetail2(NOLOCK) p
  48. INNER JOIN v_targetdetail p1 ON p1.ID=p.ParentID AND p1.TargetGroupID=p.GroupID
  49. WHERE p.IsReported=1
  50. )
  51. ,v_taregetsummaryref(TargetDetailID,pTargetID,pTargetName,TargetGroupID,sTargetID,sTargetName,ConversionValue,pToTargetID,pIsCalculated,sIsLeaf)
  52. AS
  53. (
  54. SELECT p.ID
  55. ,p.TargetID pTargetID
  56. ,p.TargetName pTargetName
  57. ,p.TargetGroupID
  58. ,p1.TargetID sTargetID
  59. ,p1.TargetName sTargetName
  60. ,p1.ConversionValue
  61. ,p.ToTargetID
  62. ,p.IsCalculated
  63. ,p1.IsLeaf
  64. FROM v_targetdetail p
  65. INNER JOIN v_targetdetail p1 ON p1.TargetGroupID=p.TargetGroupID AND p1.IDFullPath LIKE p.IDFullPath+‘%‘
  66. WHERE p.IsDisplay=1
  67. )
  68. INSERT INTO @t(TargetDetailID,pTargetID,pTargetName,sTargetID,sTargetName,TargetGroupID,ConversionValue,pToTargetID,pIsCalculated)
  69. SELECT TargetDetailID,pTargetID,pTargetName,sTargetID,sTargetName,TargetGroupID,ConversionValue,pToTargetID,pIsCalculated
  70. FROM v_taregetsummaryref
  71. UNION ALL
  72. SELECT p1.TargetDetailID
  73. ,p1.pTargetID
  74. ,p1.pTargetName
  75. ,p2.ID sTargetID
  76. ,p2.Name sTargetName
  77. ,p1.TargetGroupID
  78. ,p1.ConversionValue
  79. ,p1.pToTargetID
  80. ,p1.pIsCalculated
  81. FROM dbo.ToFinanceAccount(NOLOCK) p
  82. INNER JOIN v_taregetsummaryref p1 ON p1.sTargetID=p.ID AND p1.sIsLeaf=1
  83. INNER JOIN dbo.ToFinanceAccount p2 ON p2.FullPath LIKE p.FullPath+‘\%‘ AND ISNULL(p2.IsDelete,0)=0
  84. WHERE ISNULL(p.IsDelete,0)=0 AND p.IsLeaf!=1
  85. UPDATE p
  86. SET p.pSummaryType=ISNULL(p1.SummaryType,‘Org&Date‘)
  87. FROM @t p
  88. LEFT JOIN ToBusinessTarget2 p1 ON p1.ID=p.pTargetID
  89. RETURN
  90. end

 

SqlServer自定义函数Function中调用with as

标签:div   包含   insert   使用   nan   inner   双引号   定义   标准   

人气教程排行