簡體   English   中英

編譯 Snowflake UDF 時出現錯誤 SQL 錯誤 [1003] [42000]: SQL 編譯錯誤:語法錯誤第 7 行在 Z4757FE07FD492A8BE0EA6A760D6'31 意外'D6'3

[英]While compiling Snowflake UDF getting error SQL Error [1003] [42000]: SQL compilation error: syntax error line 7 at position 31 unexpected '{'

我希望字符串變量 Object_List 中的表名如下 Object_List=('Table1,Table2,Table3) 並希望 output 作為值表 RowNo TableName 1 Table1 2 Table2 3 Table3。

給出錯誤的代碼如下:

CREATE OR REPLACE FUNCTION Extract_TableNames(Object_List Varchar)

RETURNS TABLE ("TABLE_NAME" VARCHAR)

LANGUAGE SQL

AS

'

WITH DATATABLE(VALUEA) AS ( 
    SELECT * 
    FROM VALUES (Object_List) )

SELECT 
REPLACE(REPLACE(VALUE,'{',''),'}','')
SPLITTED_VALUE 
FROM DATATABLE , 
LATERAL SPLIT_TO_TABLE (VALUEA,',') ;
    
'

;

您在 function 中嵌入的 SQL 不應該有; 在里面。

您也可以將 SQL 簡化為:

CREATE OR REPLACE FUNCTION Extract_TableNames(Object_List TEXT)
    RETURNS TABLE (TABLE_NAME VARCHAR)
AS $$
SELECT 
    REPLACE(REPLACE(s.value,'{',''),'}','') AS splitted_value 
    FROM TABLE(SPLIT_TO_TABLE (object_list,',')) s
$$;

可以用作:

SELECT * FROM TABLE(Extract_TableNames('{aa},{bb}'));

這使:

TABLE_NAME
bb

顯示 SQL 在 function 之外單獨工作:

SELECT 
    REPLACE(REPLACE(s.value,'{',''),'}','') AS splitted_value 
    FROM TABLE(SPLIT_TO_TABLE ('{aa},{bb}',',')) s; 
TABLE_NAME
bb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM