C# 是否可以在Firebird中定义存储过程的表类型输入参数?
我需要用表类型的输入参数定义存储过程,所以,例如,如果我从C调用存储过程并将datatable作为参数传递给存储过程,将自动映射到列和字段C# 是否可以在Firebird中定义存储过程的表类型输入参数?,c#,sql,firebird,C#,Sql,Firebird,我需要用表类型的输入参数定义存储过程,所以,例如,如果我从C调用存储过程并将datatable作为参数传递给存储过程,将自动映射到列和字段 我读过关于创建全局临时表的内容,但是如何在Firebird中用作输入参数呢?我不知道这是否可能。Firebird存储过程只接受标量值,因此无法传递表类型输入参数。解决方法是将GTT定义为存储过程的伙伴,并在调用存储过程之前填充该全局临时表。然后,存储过程从全局临时表中读取数据 需要明确的是,全局临时表是您创建一次的持久性定义,然后所有连接和用户都可以重用它们
我读过关于创建全局临时表的内容,但是如何在Firebird中用作输入参数呢?我不知道这是否可能。Firebird存储过程只接受标量值,因此无法传递表类型输入参数。解决方法是将GTT定义为存储过程的伙伴,并在调用存储过程之前填充该全局临时表。然后,存储过程从全局临时表中读取数据 需要明确的是,全局临时表是您创建一次的持久性定义,然后所有连接和用户都可以重用它们(假设用户已获得正确的权限),而GTT中的数据仅对提交-删除行上的当前事务可见;默认值或提交时的当前连接保留行。它们不像SQL Server中的本地临时表 换句话说,这种类型的临时表的定义是全局的和持久的,但是数据是特定于事务或连接的 因此,您要做的是定义一个全局临时表: 创建全局临时表输入\ sp\示例 col1整数, col2 varchar100 在提交时删除行 以及一个示例存储过程 创建过程sp_示例 返回result1整数,result2 varchar8192 像 声明col1_值为整数; 声明col2_值varchar100; 开始 对于select col1,col2从input_sp_示例顺序按col1,col2到col1_值,col2_值do 开始 如果col1_值与result1不同,则 开始 结果1=col1_值; 结果2=col2_值; 终止 其他的 开始 结果2=结果2 | | col2|U值; 终止 悬 终止 终止 你可以这样称呼它: 在输入_sp_示例col1中插入col2值1,'a'; 在输入_sp_示例col1中插入col2值1,'b'; 在输入_sp_示例col1中插入col2值1,'c'; 在输入_sp_示例col1中插入col2值2,‘a’; 从sp_示例中选择*; 此基本示例将产生以下结果: 结果1 结果2 1. A. 1. ab 1. abc 2. A.