【问题标题】:Is it possible to assign a value to already declared variable in NuoDB是否可以为 NuoDB 中已声明的变量赋值
【发布时间】:2018-01-11 12:43:55
【问题描述】:

是否可以在 NuoDB 中为变量赋值在创建变量之后。

我试过了:

VAR $test string;
$test = 'test';

但它说:

[Code: -1, SQL State: 42000]  syntax error on line 1
$test = 'test'
^ expected statement got $test

根据他们的例子“Example 2: Redefining variables within a stored procedure

"一个变量不能被重新定义,使用相同的名字,在相同的 范围或代码块。”

无法找到有关文档中变量的任何其他内容。但是可能有什么东西从我身上溜走了。。 而且,拥有一个变量而没有机会改变它的值是不可思议的!听起来像废话。

提前致谢。

【问题讨论】:

    标签: sql nuodb


    【解决方案1】:

    从错误消息中,我怀疑您只需要更改 DELIMITER。

    试试:

    SQL> set delimiter @
        Delimiter is now [@]
    SQL> var $test string;
       > $test = 'abc';
       > select $test from dual@
    
     $TEST  
     ------ 
    
      abc   
    
    SQL> 
    

    干杯!

    尼克

    【讨论】:

    • 谢谢伙计。但仍然没有解决类似的错误:set DELIMITER @; VAR $测试字符串; $test = '测试'; VAR $测试字符串; ^ 预期语句结尾得到 VAR
    • 嗨,谢尔盖,我不确定我是否理解您粘贴的输出。您粘贴的输出显示 3 条语句: 1. define var $test; 2. 给$test赋值; 3.重新定义var $test;据我所知,如果您在同一范围内重新定义变量,您将收到一条错误消息。只是检查一下,第三条语句是否真的存在,或者将输出粘贴到您的评论中是否有错误?
    • 我还应该澄清一下:您是在存储过程中执行此操作,还是作为 SQL 脚本执行此操作 - 例如直接在 nuosql 命令行中执行此操作?
    • 我已经编辑了我的示例以显示实际使用该变量,并且它“有效”。
    • 一个额外的说明:在 NuoDB 中,您可以单独声明一个变量而不为其赋值,或者您可以声明一个变量在单个语句中为其赋值。您链接到的示例中的代码执行后者,因此将值分配给 l_local_var 的 2 个语句是 both 声明 分配变量。错误信息的原因是变量有2个声明,不是有2个赋值。
    【解决方案2】:

    最终发现问题出在我启动脚本的方式上。

    我太傻了……这只是因为我启动脚本的方式。有 3 个按钮,以某种方式执行查询,但我使用的只是在光标当前位置下执行一行。似乎它一直在尝试启动一个单独的行,但不是所有的查询.我刚刚尝试了一个捷径,它进展顺利。

    因此,事实上,代码没有问题,只是手歪了=)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      相关资源
      最近更新 更多