函数内部的sql

dsf9zpds  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(418)
  1. ALTER FUNCTION [dbo].[FSmapping] (
  2. @runID as bigInt,
  3. @TypMap as char(1)
  4. )
  5. RETURNS TABLE
  6. AS
  7. RETURN
  8. IF (@TypMap ='C')
  9. BEGIN
  10. SELECT b.[A/C],g.accountNumber, b.[Process], g.[endingBalanceLC], g.beginningBalanceLC
  11. FROM table1 g
  12. LEFT JOIN table2 b ON b.[Acc2]=g.Account_Synt
  13. where RunID = @runID
  14. END

我试图在sql中实现一个表函数。基本上应该还有3个 IF 唯一要切换的是表2,从基于输入的表2-4开始。错误是 IF 语句,我知道缺少了一些东西,我很难用table作为返回值实现某种开关函数。select在没有if语法的情况下可以完美地工作,它还表示if中的两个变量有错误
必须声明标量变量runid和typmap

rjjhvcjd

rjjhvcjd1#

您需要将查询更改为多语句表值函数,以便函数必须如下所示:

  1. CREATE OR ALTER FUNCTION [dbo].[FSmapping] (
  2. @runID as bigInt,
  3. @TypMap as char(1)
  4. )
  5. RETURNS @Table1JoinTable2
  6. TABLE (
  7. --table definition here
  8. Col1 VARCHAR(10)
  9. )
  10. AS
  11. BEGIN
  12. IF (@TypMap ='C')
  13. BEGIN
  14. INSERT INTO @Table1JoinTable2
  15. SELECT @TypMap
  16. --Put select query SELECT b.[A/C],g.accountNumber, b.[Process], g.[endingBalanceLC], g.beginningBalanceLC
  17. --FROM table1 g
  18. --LEFT JOIN table2 b ON b.[Acc2]=g.Account_Synt
  19. --where RunID = @runID
  20. END
  21. IF (@TypMap ='I')
  22. BEGIN
  23. INSERT INTO @Table1JoinTable2
  24. SELECT @TypMap
  25. --Put your select query
  26. END
  27. IF (@TypMap ='I')
  28. BEGIN
  29. INSERT INTO @Table1JoinTable2
  30. SELECT @TypMap
  31. --Put your select query
  32. END
  33. IF (@TypMap ='R')
  34. BEGIN
  35. INSERT INTO @Table1JoinTable2
  36. SELECT @TypMap
  37. --Put your select query
  38. END
  39. IF (@TypMap ='S')
  40. BEGIN
  41. INSERT INTO @Table1JoinTable2
  42. SELECT @TypMap
  43. --Put your select query
  44. END
  45. RETURN
  46. END
展开查看全部
zujrkrfu

zujrkrfu2#

如果typmap没有返回c,函数将返回什么?
我想你需要“别的”。

  1. IF Boolean_expression
  2. BEGIN
  3. -- Statement block executes when the Boolean expression is TRUE
  4. END
  5. ELSE
  6. BEGIN
  7. -- Statement block executes when the Boolean expression is FALSE
  8. END

相关问题