【发布时间】:2020-09-15 03:08:56
【问题描述】:
我已经编写了一个存储过程来将值插入到表中。但是当我两次调用存储过程时,重复的值被插入到表中。如何避免存储过程中的值重复。
这是我的存储过程:
CREATE OR REPLACE PROCEDURE get_columns(TABLE_NAME VARCHAR)
RETURNS ARRAY
LANGUAGE JAVASCRIPT
AS
$$
var stmt = snowflake.createStatement({
sqlText: "SELECT * FROM " + TABLE_NAME + " LIMIT 1;",
});
stmt.execute();
var cols=[];
for (i = 1; i <= stmt.getColumnCount(); i++) {
INSERT INTO TABLE1 (Col_Name) VALUES ('+"stmt.getColumnName(i)"+'); //DUPLICATE VALUES
}
return cols
$$;
编辑:
我正在检索 Col_table 的列名,例如 (Col1, Col2, Col3),我希望将这些列名放入 TABLE1。
我调用了过程call get_columns(Col_table) 并将列名插入到TABLE1 中。
当我再次调用过程call get_columns(Col_table) 时,TABLE1 将具有重复值作为(Col1, Col2, Col3, Col1, Col2, Col3)。我想通过使用合并或更新或任何其他方法来避免重复。
【问题讨论】:
-
您能给我们提供样本输入和最终结果吗?程序
get_columns的目标是什么? -
@FelipeHoffa 你能看看我的编辑吗
-
你提前知道列数吗?是否有有效的标识符来检查记录是否唯一?
-
@Sujitmohanty30 我事先不知道列数。没有有效的标识符来检查记录是否唯一。我想在插入时避免重复。
-
@R0bert 我的回答是希望插入只发生一次。但是你的目标是在不同的表上多次调用这个方法并且只有不同的列名?
标签: javascript sql stored-procedures snowflake-cloud-data-platform