如何在PowerBuilder中使用表值参数声明存储过程

时间:2013-05-24 06:58:40

标签: sql-server sql-server-2008 tsql powerbuilder

我在MS SQL Server 2008中制作了一个TVP存储过程:

CREATE PROCEDURE [TVPSP] @CID INT
    ,@OID INT = NULL
    ,@GAS ParamTypeTVP readonly
    ,@ErrorText VARCHAR(100) OUTPUT
AS
BEGIN
    select 1

    RETURN
END

我还创建了一个TVP类型:

CREATE TYPE [MDF].[ParamTypeTVP] AS TABLE(
    [ParamID] [int] IDENTITY(1,1) NOT NULL,
    [pInt1] [int] NULL,
    [pVarchar1] [varchar](777) NULL,
    PRIMARY KEY CLUSTERED 
(
    [ParamID] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)

我使用Powerbuilder内置方法生成声明,结果是:

function long TVPSP(long CID,long OID,string GAS,ref string ErrorText) RPCFUNC ALIAS FOR "TVPSP"

因此,您看到PB为TVP参数生成了一个字符串变量,该变量为false(当然,从PB调用失败)。 有可能让它以某种方式工作吗?当然我有解决方法的想法(例如使包装器sp忽略TVP参数),但我想知道如何使用TVP以这种方式工作!

提前谢谢!

的Gabor

1 个答案:

答案 0 :(得分:1)

坏消息,PB12.5文档中可能不支持它:

  

不支持的SQL Server 2008功能

     

PowerBuilder SNC接口不支持用户定义表   键入(表示表定义的用户定义类型)   SQL Server 2008中引入的结构。

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.pb.12.5/title.htm

如果你想继续尝试(如果有遗嘱有办法),那么尝试使用“any”的数据类型而不是字符串,或尝试创建一个与表匹配的结构并传递结构的数组作为参数而不是字符串。