首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在Firebird存储的proc中创建一个本地表变量?

有没有办法在Firebird存储的proc中创建一个本地表变量?
EN

Stack Overflow用户
提问于 2012-12-10 01:07:30
回答 1查看 4.6K关注 0票数 6

在MS SQL Server中,可以声明任何基元类型的局部变量,也可以声明表类型的局部变量。这个表是一个普通表,您可以在上面运行SELECTINSERTUPDATEDELETE,就像任何其他表一样,只是它是一个局部变量,而不是数据库本身的一部分。

我正尝试在Firebird中做同样的事情,但它似乎不喜欢它的语法。

代码语言:javascript
复制
declare variable value int; --works fine
declare variable values table (value int); --Error: "Token unknown (table)"

有没有办法做到这一点?(在任何人说“使用可选择的存储过程”之前,这是行不通的。我需要一些可以动态运行INSERTSELECT的东西。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-10 03:13:00

Firebird不像SQL Server那样支持表变量。

您可以使用的最接近的工具是Global Temporary Tables (需要Firebird 2.1或更高版本)

(v.2.1)全局临时表(GTT)是与永久性元数据一起存储在系统目录中,但带有临时数据的表。来自不同连接(或事务,取决于范围)的数据彼此隔离,但GTT的元数据在所有连接和事务之间共享。

GTT有两种类型:

具有在引用指定的GTT的连接的生存期内持续存在的数据;以及

其中的数据仅在引用事务的生命周期内持续。

您必须事先创建GTT。

代码语言:javascript
复制
CREATE GLOBAL TEMPORARY TABLE
  ...
  [ON COMMIT <DELETE | PRESERVE> ROWS]
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13789607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档