问题描述
有点新手,希望我能找到正确的方向。我已经简化了一些事情,以证明我正在经历的问题 (而且我真的很难在其他帖子上获得明确的答案)。
运行以下操作时:
我得到的错误:
当我用以下内容替换f_double函数中的select语句时:
它的工作原理-所以我假设我的问题是我定义和/或使用my_query部分在底部的方式。
任何帮助将不胜感激。
运行以下操作时:
with
function f_double(x in number)
return number
is y number(10,2);
begin
y:=0;
select query_val into y from my_query;
y:=x*y;
return y;
end;
my_query as (
select 2 as query_val from dual)
select f_double(2) as my_result from dual;我得到的错误:
ORA-06552: PL/SQL: ORA-00942: table or view does not exist 06552. 00000 - "PL/SQL: %s" *Cause: *Action: Error at Line: 2 Column: 25
当我用以下内容替换f_double函数中的select语句时:
select 1 into y from dual;
它的工作原理-所以我假设我的问题是我定义和/或使用my_query部分在底部的方式。
任何帮助将不胜感激。
专家解答
这里有几个问题:
W跟子句中的-PL/SQL是12c功能。假设你的11版本是正确的,你还不能使用这个!
-您正在尝试访问PL/SQL块中的命名子查询。但是你定义了这个after函数。所以代码看不到!
把这个子查询放在里面
虽然我很困惑为什么你试图从函数内部的子查询中获取值2...
如果my_query将值加倍,请在主选择中使用此值并将其传递给函数:
W跟子句中的-PL/SQL是12c功能。假设你的11版本是正确的,你还不能使用这个!
-您正在尝试访问PL/SQL块中的命名子查询。但是你定义了这个after函数。所以代码看不到!
把这个子查询放在里面
with
function f_double(x in number)
return number
is y number(10,2);
begin
y:=0;
select query_val into y from (
select 2 as query_val from dual
);
y:=x*y;
return y;
end;
select f_double(2) as my_result from dual;
MY_RESULT
4 虽然我很困惑为什么你试图从函数内部的子查询中获取值2...
如果my_query将值加倍,请在主选择中使用此值并将其传递给函数:
with
function f_double(x in number)
return number
is y number(10,2);
begin
y:=2;
y:=x*y;
return y;
end;
my_query as (
select 2 as query_val from dual)
select f_double(query_val) as my_result from my_query;
MY_RESULT
4 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




