【发布时间】:2018-01-17 20:53:54
【问题描述】:
在 SQL Server 数据库中,可以像这样使用表变量:
declare @table as table (a int)
在 Azure 数据仓库中,这会引发错误。
第 1 行第 19 列解析错误:'table' 附近的语法不正确
在 Azure 数据仓库中,您可以使用临时表:
create table #table (a int)
但不在函数内部。
消息 2772,级别 16,状态 1,第 6 行无法访问临时表 从函数内部。
来自微软的This document 说,
◦必须分两步声明(而不是内联):◾CREATE TYPE 我的类型作为表 ...; ,然后◾DECLARE @mytablevariable my_type;。
但是当我尝试这个时:
create type t as table (a int);
drop type t;
我明白了:
消息 103010,第 16 级,状态 1,第 1 行解析错误,第 1 行,第 1 列: 8: 'type' 附近的语法不正确。
我的目标是在使用临时表的 Azure 数据仓库中创建一个函数。可以实现吗?
编辑从这里开始
请注意,我并不是在寻找其他方法来创建一个特定的功能。我实际上已经做到了并继续前进。我是一名资深程序员,但也是一名 Azure 数据仓库新手。我想知道是否可以在 Azure 数据仓库函数中加入一些临时表的概念。
【问题讨论】:
-
Azure 数据仓库不支持用户定义的类型。你可以在函数中使用 CTE 代替吗?
-
如果必须,我可以解决这个问题,但我宁愿不这样做。我正在处理的功能结合了代码审查中提出的逻辑。 codereview.stackexchange.com/questions/185329/…
-
你究竟想让你的函数在这里做什么?您最初编写的哪些 SQL 不起作用?
-
Code Review 的链接显示了我最初编写的 sql,但我是针对数据库编写的。当我尝试将其放入数据仓库功能时,我失败了。
-
您链接到的那个 SQL 有 3 个返回的数据集。一个函数只能返回 1 个数据集/值。您希望返回哪个数据集?
标签: sql sql-server sql-data-warehouse