gpt4 book ai didi

sql - 即席查询 Oracle PL/SQL - 面向 SQL Server 开发人员

转载 作者:行者123 更新时间:2023-12-02 04:32:25 26 4
gpt4 key购买 nike

很多年前我曾经做过Oracle开发。过去 15 年的大部分时间我主要从事 SQL Server 工作,并从事 Oracle 工作,与 Web 服务等工作隔离。

我的问题似乎在网上被问过几次,但似乎很难沟通 - 至少从答案来看。我非常欣赏工具和功能的不同,知道我必须学习新东西,但这是如此简单,但似乎很难做到。

我希望对数据库进行一些临时查询。目前我们正在使用 SQL Navigator - 我愿意使用其他工具...

在 SQL Server Management Studio 中,如果打开查询窗口,键入一些返回值或集合的 SQL,您将在结果窗口中获得行或值的良好显示。

我发现 Oracle PL/SQL 的情况有点不同,我发现我需要返回一个游标 - 但如何获得一个工具来显示结果?

我开始很简单:

    declare 
my_id number := 356655;
cursor c1 is select my_id from dual;

begin
open c1;
end;

运行良好 - 但我如何查看结果?有没有像 SSMS 一样“很好”地处理这个问题的工具?我已经习惯了能够做很多这样的事情,包括诸如此类的事情

(也许语法不完全正确?但你明白了......)

declare 
my_id number := 356655;
cursor c1 is select name from my_table where id = my_id;

begin
open c1;

并将结果以文本/网格形式显示给我。理想情况下,有一个很好的解决方案。也许是一些漂亮的新工具?

最佳答案

SQL Developer或者 SQL*Plus,您可以使用在 PL/SQL block 之前声明的绑定(bind)变量:

variable rc refcursor;
declare
my_id number := 356655;
begin
open :rc for select my_id from dual;
end;
/

print rc

RC
-------------------------------
356655

您还可以在查询中使用绑定(bind)变量,这很有用:

variable my_id number;
variable rc refcursor;
execute :my_id := 356655;

begin
open :rc for select :my_id from dual;
end;
/

print rc

variableprint SQL*Plus 文档中涵盖了命令,该文档很大程度上也适用于 SQL Developer - 其 own documentation ,包括commands that are carried over from SQL*Plus .

如果您有一个返回引用游标的函数,那么您可以在查询中调用该函数,如select func(val) from Dual,然后结果可以放入网格中;或者您可以使用相同的 :rc 绑定(bind)变量调用函数(或过程)并打印它。但如果您只进行临时查询,我不确定这两者是否有帮助。

另一方面,即使您的查询很复杂,使用 PL/SQL block 进行即席查询似乎有点粗暴。您需要一个充分的理由来为 block 内的 select 语句打开游标,而不是直接运行 select。 (不确定这是否是 SQL Server 的问题,或者您是否确实需要这样做!)。如果您只是在 block 内运行查询,则不需要该 block ,即使您想为查询中使用的值保留绑定(bind)变量:

variable my_id number;
execute :my_id := 356655;
select :my_id from dual;

:MY_ID
----------
356655

关于sql - 即席查询 Oracle PL/SQL - 面向 SQL Server 开发人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com