当前位置: 首页 > 知识库问答 >
问题:

在Snowflake的javascript过程中传递值

张腾
2023-03-14
CREATE OR REPLACE PROCEDURE PASS_VAR_IN_JS()
RETURNS VARCHAR
LANGUAGE javascript
  AS
    $$
    var command = "SELECT * FROM TABLE WHERE ATTRIBUTE = 'Value'";
    var stmt = snowflake.createStatement( {sqlText: command} );
    var result1 = stmt.execute();
    return result1.getColumnName(3); //this returns column name
    var col_name = result1.getColumnName(3); //save column name to variable

    //pass the column name to the query
    var stmt = snowflake.createStatement({sqlText: "SELECT * FROM INFORMATION_SCHEMA WHERE COLUMN_NAME = ;", binds:[col_name]});

    $$; 
UPDATE - working code that passes one result to another query
<pre>
CREATE OR REPLACE PROCEDURE szpotma_rowcount()
RETURNS VARCHAR(250)
LANGUAGE JAVASCRIPT
as
$$
  var command = `SELECT ATTR1 FROM TABLE1 LIMIT 1`; 
  var stmt = snowflake.createStatement( {sqlText: command} );
  var rs = stmt.execute(), col_name ;

  if (rs.next()) {
    col_name = rs.getColumnValue(1);
    stmt = snowflake.createStatement({
        sqlText: `SELECT STATUS FROM TABLE_STATUS WHERE ATTR1 = :1`, binds: [col_name]});

    //view second query results
    rs = stmt.execute();    
    rs.next()
    return rs.getColumnValue(1);
  }
$$

共有1个答案

仉明知
2023-03-14

当然可以。

您只需:

  var command = `SELECT * FROM TABLE WHERE ATTRIBUTE = 'Value'`;
  var stmt = snowflake.createStatement( {sqlText: command} );
  var rs = stmt.execute(), col_name ;
  if (rs.next()) {
    col_name = rs.getColumnValue(3);

    stmt = snowflake.createStatement({
        sqlText: `SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = :1`, 
          binds: [col_name]
    });
  }

我已经列出了从结果集中提取数据的各种方法:
如何在存储过程中使用Show命令-不起作用

  var result = [], row, col;
  while (rs.next()) {
    row = [];
    for (col = 1; col <= stmt.columnCount; col++)
      row.push(rs.getColumnValue(col));
    result.push(row);
  }
var result = [], cols = Array.from({ length: stmt.columnCount }, (v, i) => i + 1);
while (rs.next()) result.push(cols.map(c => rs.getColumnValue(c)));
var result =
    [ Array.from({ length: stmt.columnCount }, (v, i) => stmt.getColumnName(i + 1)) ];
while (rs.next()) result.push(result[0].map(cn => rs.getColumnValue(cn)));
 类似资料:
  • JavaScript执行错误:未捕获的referenceError:STPROC1中“var request=new XMLHttpRequest();”处未定义XMLHttpRequest位置22堆垛机:STPROC1线:3 我对JavaScript和Snowflake中的过程都相当陌生。所以,不知道问题是什么。我在这里使用基于参考的代码。

  • 问题内容: 如何在JavaScript中通过引用传递变量?我要对3个变量执行一些操作,因此我想将它们放在for循环中并对每个变量执行操作。 伪代码: 做这个的最好方式是什么? 问题答案: JavaScript中没有可用的“通过引用传递”。您可以传递一个对象(也就是说,您可以按值传递对一个对象的引用),然后让一个函数修改该对象的内容: 您可以使用数字索引遍历数组的属性,并根据需要修改数组的每个单元格

  • 问题内容: 我正在使用jQuery对PHP脚本进行AJAX调用,该PHP脚本需要返回嵌入JSON结果中的javascript代码才能执行jQuery代码。如何在JSON中传递JavaScript代码? 问题答案: 两种方式: 您必须将其作为字符串传递并在客户端使用。 您可以使用JSONP,而不是进行调用,而是将客户端脚本插入一个带有指向返回新脚本的服务器端代码的指针。 在任何一种情况下,请确保将其

  • 问题内容: 我正在创建下面的存储过程。 在上面,当我动态地传递该子句时,它不能正确地对数据进行排序,但是当我显式地写入列名时,它可以很好地工作。可能是其采取的,而不是 我尝试写作,但是没有用 我如何在这里动态传递订单。 编辑:@Andomar:我尝试了您提供的解决方案,并为Date类型添加了一个字段。而且它也不起作用。 以下是我的工作。 问题答案: 您可以使用一个复杂的子句。每个排序方向和每种数据

  • 问题内容: Go中的地图是否通过值或引用传递? 始终可以将函数定义为以下形式,但这是一个过大的杀伤力吗? 相同的返回值问题。我应该返回指向地图的指针,还是将地图作为值返回? 这样做的目的当然是避免不必要的数据复制。 问题答案: 在此线程中,您将找到答案: Golang:使用地图参考来访问地图 您不需要在地图上使用指针。 映射类型是引用类型,例如指针或切片[1] 如果需要更改会话,可以使用一个指针:

  • 问题内容: Javascript是通过引用传递还是通过值传递?这是 Javascript中的 一个示例 :The Good Parts 。我对矩形函数的参数非常困惑。它实际上是,并在函数内部重新定义。没有原始参考。如果我从功能参数中删除它,则内部区域功能将无法访问它。 是关闭吗?但是没有函数返回。 问题答案: 基元按值传递,对象按“引用副本”传递。 具体来说,当您传递对象(或数组)时,您(无形中)