gpt4 book ai didi

oracle - 如何在 PLSQL 中使用 MEMBER OF

转载 作者:行者123 更新时间:2023-12-05 00:41:02 24 4
gpt4 key购买 nike

我已经看到有关此错误的问题,但要么是调用外部存储,要么尝试使用不兼容的类型或使用 varray。所以我设置了一个非常简单的例子,但我仍然无法让它工作。

DECLARE 
TYPE mytype IS TABLE OF VARCHAR2(4) INDEX BY PLS_INTEGER;
mytable mytype;
BEGIN
mytable((mytable.COUNT+1)) := 'COD1';
mytable((mytable.COUNT+1)) := 'COD2';
mytable((mytable.COUNT+1)) := 'COD3';
mytable((mytable.COUNT+1)) := 'COD4';
--IF 'COD1' MEMBER OF mytable THEN DBMS_OUTPUT.PUT_LINE('We have the code'); END IF;
FOR i IN 1..mytable.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(mytable(i));
END LOOP;
END;

如果我运行它,我会得到这个:

COD1
COD2
COD3
COD4

如果我取消注释 IF(我打算使用什么),我会收到此错误。

PLS-00306: wrong number or types of arguments in call to MEMBER OF

也许我没有正确使用它或有什么问题。

我试图在循环中使用它,我将我在“数组”中使用过的代码保存起来,然后给出一个我需要知道它是否已经被使用过的代码。我最初的解决方案是附加到像“.COD1..COD2”这样的字符串。并做一个简单的 INSTR 但似乎不正确,我喜欢数组。我听说那个函数(成员)只要按照我认为应该的方式工作,就可以做我想做的事。

你能告诉我如何正确使用,我做错了什么或如何以更好的方式解决我的问题吗?

差不多了...我把它改成

-- Declare
TYPE mytype IS TABLE OF VARCHAR2(4) INDEX BY VARCHAR(4);
mytable mytype;
-- Fill
mytable('COD1') := 'COD1'; -- kind of redundant I only need the index
-- The magic
IF mytable.EXISTS('COD1')...

但我还是觉得应该有更好的办法。

最佳答案

我已经尝试说明如何通过 NESTED TABLE TYPE 使用 MEMBER 函数。它不能与关联数组一起使用。希望对您有所帮助。

SET serveroutput ON;
DECLARE
type my_tab
IS
TABLE OF VARCHAR2(100);
tab my_tab;
BEGIN
tab:=my_tab('AVRAJIT','SHUBHOJIT');
IF 'AVRAJIT' member OF (tab) THEN
dbms_output.put_line('Yes');
ELSE
dbms_output.put_line('No');
END IF;
END;

关于oracle - 如何在 PLSQL 中使用 MEMBER OF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988453/

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