【问题标题】:i want to create a procedure with a view of a select in toad oracle我想在 toad oracle 中创建一个带有选择视图的过程
【发布时间】:2017-07-12 05:34:09
【问题描述】:

我想在toad oracle中创建一个带有select视图的过程来引入三个参数并进行选择

create or replace procedure busqueda (nomlu varchar ,ape varchar,apese varchar) 
as
begin
execute immediate  'create view vprueba as
    select
        alu.t_nombre, 
        alu.t_apellido1, 
        alu.t_apellido2,
    from 
        tlalumnos alu
    where 
        t_nombre = nomlu
        and t_apellido1 =ape 
        and t_apellido2 =apese;

end busqueda;

【问题讨论】:

  • 替换后你把我弄丢了
  • 为特定人名创建视图可能不是正确的解决方案。关于代码;您在选择中的“apese”一词后缺少单引号。
  • ...在您的选择中alu.t_apellido2 之后有一个悬空的,
  • 您的帖子中没有问题,我们需要猜测您想要什么。你面临什么问题?编译时收到的错误消息是什么?您提供的信息越多,我们就能提供最大的帮助。此外,除非您有一些其他代码删除视图,否则该过程只会成功运行一次。第二次运行它时,您将面临ORA-00955 name is already used by an existing object 错误。如果要覆盖视图,可以使用create or replace view。但我同意@BriteSponge,这看起来不像是正确的设计。

标签: oracle select stored-procedures view


【解决方案1】:

您缺少EXECUTE IMMEDIATE 字符串的右引号,您必须将参数转换为字符串并将值连接到CREATE VIEW

create or replace procedure busqueda (nomlu varchar ,ape varchar,apese varchar) 
as
begin
execute immediate  'create OR REPLACE view vprueba as
    select
        alu.t_nombre, 
        alu.t_apellido1, 
        alu.t_apellido2,
    from 
        tlalumnos alu
    where 
        t_nombre = ''' || TO_CHAR(nomlu) || '''' ||
      ' and t_apellido1 = ''' || TO_CHAR(ape) || '''' ||
      ' and t_apellido2 = ''' || TO_CHAR(apese) || '''';
end busqueda;

尝试使用它,看看它是否能让您更接近解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多