سؤال

وهنا نسخة الزائفة رمز مبسط ما أود أن تكون قادرة على القيام في PL-SQL (أوراكل):

DECLARE
  mylist as ARRAY
BEGIN
  mylist (1) := '1'
  mylist (2) := '3'
  ...
  SELECT *
  FROM aTable
  WHERE aKey IN mylist;
END;

ووSELECT يجب إرجاع السجلات المطابقة للقائمتي (1)، قائمتي (2) وما إلى ذلك يجب أن تكون مماثلة لأورينج كل القيم، ولكن بالطبع نحن لا نعرف مسبقا كيف العديد من القيم التي سنحصل عليها.

وكيف يمكنني تحقيق ذلك؟ وأنا أعلم أن PL / SQL لديه بعض أنواع البيانات المجموعة، ولكن أنا لا يمكن أن يبدو للحصول عليها للعمل بشكل صحيح في بيانات SQL.

وشكرا لأية أفكار.

هل كانت مفيدة؟

المحلول

وهذا من السهل القيام به مع وظيفة TABLE(). الصيد واحد هو أن متغير مجموعة يجب استخدام نوع أعلن في SQL. وذلك لأن SELECT يستخدم محرك SQL، لذلك الإعلانات PL / SQL هي خارج النطاق.

SQL> create or replace type numbers_nt as table of number
  2  /

Type created.

SQL>
SQL> declare
  2      l_array numbers_nt;
  3  begin
  4      l_array := numbers_nt (7521,7566,7654);
  5      for r in ( select ename
  6                 from emp
  7                 where empno in ( select *
  8                                  from table (l_array)
  9                                 )
 10               )
 11      loop
 12          dbms_output.put_line ( 'employee name = '||r.ename);
 13      end loop;
 14  end;
 15  /
employee name = PADFIELD
employee name = ROBERTSON
employee name = BILLINGTON

PL/SQL procedure successfully completed.

SQL>

نصائح أخرى

وزوجان من الاقتراحات:

1.) هناك على SQL الكلمة CAST التي يمكنك القيام به يمكن أن قيام بهذه المهمة ... فهو يجعل أن يعامل جمع الخاصة بك كما لو كان الجدول.

2.) وظائف عبر خط انابيب. في الأساس الدالة بإرجاع البيانات التي يشبه الجدول.

وهذا الرابط يلخص الخيارات ويحتوي على عدد من القوائم التعليمات البرمجية التي شرحها.

<وأ href = "http://www.databasejournal.com/features/oracle/article.php/3352091/CASTing-About-For-a-Solution-Using-CAST-and-Table-Functions-in- PLSQL.htm "يختلط =" نوفولو noreferrer "> http://www.databasejournal.com/features/oracle/article.php/3352091/CASTing-About-For-a-Solution-Using-CAST-and-Table-Functions -في-PLSQL.htm

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top