首页 > 解决方案 > 多语句表值函数问题

问题描述

我对多语句表值函数有疑问。这段代码有什么问题

SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO

CREATE FUNCTION FN_BFS_CFS_BALANCE_VIW
(
    @param1 VARCHAR
)
RETURNS @table TABLE
(
    DAT VARCHAR
  , COD_ACN_KOL VARCHAR
  , DES_ACN_KOL VARCHAR
  , COD_ACN_MOIN VARCHAR
  , DES_ACN_MOIN VARCHAR
  , COD_ACN_TAFSIL VARCHAR
  , DES_ACN_TAFSIL VARCHAR
  , COD_FAREI1 VARCHAR
  , DES_FAREI1 VARCHAR
  , COD_FAREI2 VARCHAR
  , DES_FAREI2 VARCHAR
  , TYP_FRGN INT
  , DES_FRGN VARCHAR
  , TYP_DPN INT
  , DES_DPN VARCHAR
  , FLG_129 INT
  , DES_129 VARCHAR
  , AMN_DBT INT
  , AMN_CRD INT
  , COD_MONEY VARCHAR
  , DES_MONEY VARCHAR
  , AMN_DBT_FRGN INT
  , AMN_CRD_FRGN INT
)
AS
BEGIN

    EXEC (' call tpout.set_context(''PARAM1'',' + '' + @param1 + '' + ' AT [LS_New2CFS]');

    SELECT DAT
         , COD_ACN_KOL
         , DES_ACN_KOL
         , COD_ACN_MOIN
         , DES_ACN_MOIN
         , COD_ACN_TAFSIL
         , DES_ACN_TAFSIL
         , COD_FAREI1
         , DES_FAREI1
         , COD_FAREI2
         , DES_FAREI2
         , TYP_FRGN
         , DES_FRGN
         , TYP_DPN
         , DES_DPN
         , FLG_129
         , DES_129
         , AMN_DBT
         , AMN_CRD
         , COD_MONEY
         , DES_MONEY
         , AMN_DBT_FRGN
         , AMN_CRD_FRGN
    FROM LS_New2CFS..TPOUT.BFS_CFS_BALANCE_VIW;


    RETURN;

END;

当我执行此代码时,会出现此错误。

PS:[LS_New2CFS]是Oracle链接服务器。[BFS_CFS_BALANCE_VIW]是 Oracle 数据库中的一个视图。

消息 444,级别 16,状态 2,过程 FN_BFS_CFS_BALANCE_VIW,第 37 行 [批处理开始第 5 行]
在函数中无效使用副作用运算符“执行字符串”。

消息 443,级别 16,状态 14,过程 FN_BFS_CFS_BALANCE_VIW,第 33 行 [批处理开始第 5 行]
函数中包含的选择语句无法将数据返回到客户端。

谢谢你

标签: sql-server-2008dynamic-programmingdynamic-sqlsql-function

解决方案


推荐阅读