פוסטים

שינוי בגרסה 12: שינוי רוחב מקסימלי עמודה מסוג varchar2

עד גרסה 12 הייתה לנו בעיה קטנה. אם היינו יוצרים קוד ב-PL/SQL, היינו יכולים להגדיר משתנים מסוג varchar2 באורך של עד 32K תווים וזה עבד בסדר גמור. העניין הוא ש-varchar2 של pl/sql ושל sql לא היה אותו דבר וזה היה גורם לנו לעיתים קרובות לבעיות.

החל מגרסה 12 ניתן להגדיר בבסיס הנתונים ש-varchar2 של sql הוא גם עד 32k ובכך ליישר קו בין השפות.
המשך קריאה…

יצירת קובץ CSV מתוך PL/SQL

לפני כמה שבועות כתבתי פוסט בנושא יצירת קובץ CSV על ידי שימוש בשליפה (כלומר מתוך sqlplus).
הפוסט התגלה כמועיל במיוחד כי בשבועות שעברו מאז התבקשתי על ידי משתמשים להוציא עוד ועוד טבלאות לפורמט CSV.

השיטה שתוארה בפוסט הקודם היא שיטה מעולה כל עוד לא מנסים לשרשר יותר מדי שדות ואז אורך הרשומה הופך להיות מגבלה רצינית. בשיטה הקודמת שירשור ערכים שעובר גודל מסויים (לא בדקתי מהי, נדמה לי שזה 4000 – המגבלה של פונקציות SQL באופן כללי) נכשל עם הודעת שגיאה: ORA-01489: result of string concatenation is too long.

כדי לפתור את הבעיה הזו כתבתי סקריפט שמייצר קוד PL/SQL. אם נריץ את הקוד שהסקריפט הזה מייצר אז יודפסו למסך השורות של קובץ ה-CSV.

המשך קריאה…

איך לפתור את שגיאה ORA-04068

כל אחד שמפתח package-ים ב-PL/SQL נתקל בבעיה הזו לפחות פעם אחת במהלך הפיתוח: ORA-04068: existing state of packages has been discarded. זו בעיה נפוצה למדי בפיתוח package-ים שהפתרון המיידי שלה הוא להריץ שוב את הפרוצדורה או הפונקציה מתוך ה-package כדי שזה יסתדר. בוא נבין מה הבעיה ואיך ניתן לטפל בבעיה.

המשך קריאה…

שינוי התנהגות ב-execute immediate בין גרסה 10 לגרסה 11

במסגרת הבדיקות של גרסה 11 נתקלנו בתקלה מוזרה – קוד pl/sql שעבד בגרסאות קודמות הפסיק לעבוד בגרסה החדשה.

הקוד שעבד קודם הוא:

SQL> begin
2 execute immediate 'alter view vemp compile;';
3 end;
4 /
PL/SQL procedure successfully completed.

אבל כאשר ניסינו לשים אותו בגרסה 11.2.0 קיבלנו את ההודעה הבאה:

SQL> begin
2 execute immediate 'alter view vemp compile;';
3 end;
4 /
begin
*
ERROR at line 1:
ORA-00911: invalid character
ORA-06512: at line 2

המשך קריאה…