gpt4 book ai didi

sql - PLS-00312 : a positional parameter association may not follow a named association

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:36 40 4
gpt4 key购买 nike

任何人都知道如何避免 PLS-00312 错误?

“PLS-00312:位置参数关联可能不遵循命名关联”

我得到这个是因为下面一行:

AttachList=> v_est_proc_name||'_EST_PROC.csv',v_prd_segs||'_PRD_SEGS.csv',

在下面的过程中:

create or replace procedure send_csv as

v_tomail varchar2(40);
v_est_proc_name varchar2(40);
v_prd_segs varchar2(40);

cursor c1 is
SELECT email_address
INTO v_tomail
FROM mail where
mdate = (select max(mdate) FROM blah)
group by email_address
order by max(mdate) desc;

begin
open c1;
fetch c1 into v_tomail;

SELECT tablename into v_est_proc_name
FROM blah_blah
WHERE
CREATED_AT = (select MAX(CREATED_AT) from blah);

SELECT tablename into v_prd_segs
FROM blah_blah
WHERE
CREATED_AT = (select MAX(CREATED_AT) from blah);

mail.send_mail.send(
ToList=> v_tomail,
Subject=> 'see attachments',
Body=> 'Please action the attached files for this request.',
FromEmail=> 'donotreply@mail.com',
FromHost=> 'host',
SMTPServer=> 'host',
AttachList=> v_est_proc_name||'_EST_PROC.csv',v_prd_segs||'_PRD_SEGS.csv',

Directory=> 'CSV_DIR');
End;

我只是不知道如何摆脱它...必须有办法。

最佳答案

消息是不言自明的。

假设您有一个过程或函数(让我们说一个过程,具体来说),my_proc,有四个参数:

my_proc(param1, param2, param3, param4)

给定四个参数 arg1、arg2、arg3、arg4 的值,您可以这样调用过程:

my_proc(arg1, arg2, arg3, arg4)

-- 这使用位置 参数关联。参数的顺序有意义。

你也可以这样调用它:

my_proc(param1 => arg1, param3 => arg3, param2 => arg2, param4 => arg4)

-- 这使用命名 参数关联。 “关联”的顺序不再有意义 - 您可以按照您喜欢的任何顺序放置赋值(关联),只要您将正确的参数与正确的参数名称配对即可。

你也可以混合使用它们,但你只能先使用位置关联,然后再使用命名关联。这是合法的:

my_proc(arg1, arg2, param4 => arg4, param3 => arg3)

但这是非法的:

my_proc(arg1, param3 => arg3, param2 => arg2, arg4)

这有很好的理由,但理由无关紧要;这是您的代码必须遵循的语法要求,即使没有充分的理由。

在你的代码中,所有的关联都被命名,除了参数(值)

v_prd_segs||'_PRD_SEGS.csv'

分配给特定的命名参数。

要修复它,请使用应该接受此参数的参数的名称,就像您对所有其他参数所做的那样。

关于sql - PLS-00312 : a positional parameter association may not follow a named association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55016540/

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