Dan*_*cuk 9 sql sql-server sql-data-warehouse
在SQL Server数据库中,可以使用如下表变量:
declare @table as table (a int)
Run Code Online (Sandbox Code Playgroud)
在Azure数据仓库中,会引发错误.
在行处解析错误:1,列:19:'table'附近的语法不正确
在Azure数据仓库中,您可以使用临时表:
create table #table (a int)
Run Code Online (Sandbox Code Playgroud)
但不是内部功能.
消息2772,级别16,状态1,行6无法从函数内访问临时表.
微软的这份文件说,
◦必须分两步声明(而不是内联):◾CREATETYPEmy_type AS TABLE ...; ,然后◾DECLARE@ mytablevariable my_type;.
但是,当我尝试这个:
create type t as table (a int);
drop type t;
Run Code Online (Sandbox Code Playgroud)
我明白了:
消息103010,级别16,状态1,行1行中的解析错误:1,列:8:"类型"附近的语法不正确.
我的目标是在Azure数据仓库中使用一个使用临时表的函数.它可以实现吗?
编辑从这里开始
请注意,我不是在寻找其他方法来创建一个特定的功能.我实际上已经这样做了并继续前进.我是一名资深程序员,但是Azure数据仓库的新手.我想知道是否可以在Azure数据仓库功能中加入一些临时表的概念.
不,你不能。无法在用户定义函数 (UDF) 内创建对象。请改用表变量。
如果您希望使用用户定义类型,请首先在 UDF 外部创建它,并将其用作 UDF 内的变量类型。
-- Create the data type
CREATE TYPE TestType AS TABLE
(
Id INT NOT NULL,
Col1 VARCHAR(20) NOT NULL)
GO
-- Create the tabled valued function
CREATE FUNCTION TestFunction
()
RETURNS
@Results TABLE
(Result1 INT, Result2 INT)
AS
BEGIN
-- Fill the table variable with the rows for your result set
DECLARE @Var1 TestType;
RETURN
END
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |