【问题标题】:How to display variable values in resultset如何在结果集中显示变量值
【发布时间】:2015-09-23 07:11:09
【问题描述】:

我无法将下面的 T-SQL 脚本转换为 ORACLE。

DECLARE @ABC VARCHAR(50) = 'SOME VALUE'
SELECT @ABC

【问题讨论】:

  • select cast('SOME VALUE' as VARCHAR(50)) from dual?
  • 必须有DECLARE语句。
  • @PratapMane 不要只是发布一些东西并期望有人为您转换代码。说明你的要求。发布输入和所需的输出。
  • 输出应该在 DATAGRID 中而不是在 DBMS OUTPUT 中。

标签: sql oracle oracle11g oracle10g


【解决方案1】:

如果您在 SQL 中工作并希望像在 T-SQL 中一样返回结果集,您可以在 Oracle 端使用 SP 而不使用 sys_refcursor 参数。这种情况下的结果集可以以各种方式返回和处理。请按照以下示例获取解决方案之一:

create or replace  procedure sp_ret_res_set(ref1 out sys_refcursor)
is
v_ABC VARCHAR2(50) DEFAULT 'SOME VALUE';
begin
open ref1 for select v_ABC from dual;
end;
/
var c refcursor;
/
execute sp_ret_res_set(:c);
/
print c;

【讨论】:

  • 我不想打印消息。我需要它在结果集中。
  • 那么你需要一个 sys_refcursor
  • 我同意@IspirerSQLWaysMigrations 使用 sys_refcursor 。如果您仍然不想使用 sys_refcursor,那么我建议使用 Oracle TYPES。
  • @IspirerSQLWaysMigrations 代码不会产生任何结果。如果满足我的要求,请寻找 Oracle TYPES。
【解决方案2】:

我认为你只需要一个简单的 SELECT

例如,

SQL> SELECT CAST('SOME VALUE' AS VARCHAR(50)) str FROM dual;

STR
--------------------------------------------------
SOME VALUE

SQL>

您可以直接使用 DUAL 表而无需显式转换为 VARCHAR2,

SQL> SELECT 'SOME VALUE' str FROM dual;

STR
----------
SOME VALUE

SQL>

但是,如果您没有明确地转换它,它将是 CHAR 而不是 VARCHAR2。因此,如果您希望数据类型为 VARCHAR2,请使用 CAST

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2014-04-09
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2016-03-24
    • 2013-10-30
    相关资源
    最近更新 更多