【问题标题】:How to define/declare and use variable in Squirrel SQL client 3如何在 Squirrel SQL 客户端 3 中定义/声明和使用变量
【发布时间】:2012-05-09 08:36:23
【问题描述】:

我使用的是 SQuirreL SQL Client Version 3.2.1 软件,我想像这样声明变量

define dateFrom = '13/04/2012';
define dateTo = '13/04/2012'

然后像这样在我的 sql 查询中使用它

SELECT * FROM table_name WHERE TRUNC(column_name) BETWEEN to_date('&dateFrom','YYYY-MM-DD') AND to_date('&dateTo','YYYY-MM-DD');

但它不起作用。 如何在 SQuirreL 中定义和使用变量。

【问题讨论】:

  • SQuirreL 是一个客户端,而不是实际的 RDBMS。你在调用什么 RDBMS?也就是说,变量将在您从 SQuirreL 发送到 RDBMS 的 SQL 中声明
  • 我正在调用 Oracle 数据库。
  • 您收到什么错误信息?格式掩码读取“YYYY-MM-DD”,而您的常量值格式为“DD/MM/YYYY”。您是否在查询中尝试过该格式?

标签: sql oracle squirrel-sql


【解决方案1】:

也许不是你想要的,但你试过加载插件'sqlparam'吗?它提供变量替换,例如

SELECT * FROM table_name WHERE TRUNC(column_name) BETWEEN :dateFrom and :dataTo

运行此查询时,Squirrel 会询问值。

【讨论】:

  • 错误:ORA-01008:并非所有变量都绑定
【解决方案2】:

我知道这个问题确实很老,但它帮助我找到了解决方案,我想我会分享它。使用 SquirrelSQL 3.8.1 这在针对 oracle 数据库运行时有效。

SELECT * FROM table_name WHERE TRUNC(column_name) BETWEEN to_date( :dateFrom ,'YYYY-MM-DD') AND to_date( :dateTo,'YYYY-MM-DD');

注意:函数调用和绑定变量冒号之间的空格是必需的——没有它你会得到一个错误。

【讨论】:

    【解决方案3】:

    "SQuirreL(就像 Oracle 的 SQL-Plus)需要知道你什么时候完成 您的匿名程序。这通常通过在末尾添加一行来完成 带有单斜杠 (/) 字符的过程。例如:”

    DECLARE
    v1  NUMBER(3);
    
    BEGIN
      v1 := 3;
      select 1 from dual
    END;
    /
    

    请看这里:http://sourceforge.net/p/squirrel-sql/mailman/message/28580491/

    现在,当您选择包含斜杠的 SQL 时,您将能够使用 Ctrl+Enter 运行它。

    【讨论】:

    • 选择需要一个 into 部分,并且在末尾缺少分号。但这不会以当前形式返回任何值。
    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多