在MS SQL Server中,可以声明任何基元类型的局部变量,也可以声明表类型的局部变量。这个表是一个普通表,您可以在上面运行SELECT、INSERT、UPDATE和DELETE,就像任何其他表一样,只是它是一个局部变量,而不是数据库本身的一部分。
我正尝试在Firebird中做同样的事情,但它似乎不喜欢它的语法。
declare variable value int; --works fine
declare variable values table (value int); --Error: "Token unknown (table)"有没有办法做到这一点?(在任何人说“使用可选择的存储过程”之前,这是行不通的。我需要一些可以动态运行INSERT和SELECT的东西。)
发布于 2012-12-10 03:13:00
Firebird不像SQL Server那样支持表变量。
您可以使用的最接近的工具是Global Temporary Tables (需要Firebird 2.1或更高版本)
(v.2.1)全局临时表(GTT)是与永久性元数据一起存储在系统目录中,但带有临时数据的表。来自不同连接(或事务,取决于范围)的数据彼此隔离,但GTT的元数据在所有连接和事务之间共享。
GTT有两种类型:
具有在引用指定的GTT的连接的生存期内持续存在的数据;以及
其中的数据仅在引用事务的生命周期内持续。
您必须事先创建GTT。
CREATE GLOBAL TEMPORARY TABLE
...
[ON COMMIT <DELETE | PRESERVE> ROWS]https://stackoverflow.com/questions/13789607
复制相似问题