سؤال

لدي هذا الإجراء:

CREATE OR REPLACE PROCEDURE CONV1(
    pDate   IN  VARCHAR2,
    pYear  OUT number,
    pMonth OUT number,
    pDay   OUT number
)
AS
    lDate   DATE;
BEGIN
    lDate := to_date(pDate, 'DD.MM.YYYY HH24:MI:SS');
    pYear := to_number(to_char(lDate, 'YYYY'));
    pMonth := to_number(to_char(lDate, 'MM'));
    pDay := to_number(to_char(lDate, 'DD'));

END CONV1;
/

كيف أسمي هذا الإجراء إذا كنت أريد فقط أحد الأمامات هناك؟ (مثل Select FMAN_STAT_CONV1('16.07.2010', pDay) from dual; (الذي لا يعمل راجع للشغل))

هجيت!

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

المحلول

قم بإنشاء وظيفة ستستخدم الإجراء Conv1 ، ولكن سيعود قيمة واحدة فقط.

أو حتى أفضل لحالتك الخاصة

SELECT to_char(to_date(your_date, 'DD.MM.YYYY HH24:MI:SS'), 'DD') from dual.

أو الحالة الشائعة هي:

CREATE OR REPLACE FUNCTION CONV2(
  pDate   IN  VARCHAR2
) 
RETURN NUMBER
IS
  pDay   number;
  pMonth number;
  pYear  number;

BEGIN
   conv1(pDate, pYear, pMonth, pDay);
   return pDay;
END;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top