سؤال

أحتاج إلى إزالة علامات الاقتباس من أسماء الأعمدة في العديد من الجداول في مخططي. هناك أي طريقة لأتمتة هذه العملية؟، أي وظيفة في Oracle أو بعض الأداة التي تتيح لي تغيير أسماء الأعمدة التي تقوم بإزالة علامات الأسعار. أنا أستخدم أوراكل 11G.

تحديث

أنا آسف، كان علي إعادة صياغة سؤالي.

شكرا لك مقدما.

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

المحلول

إذا كنت ترغب فقط في التخلص من جميع أسماء الأعمدة الحساسة للحالة

SQL> create table foo ( "x" number );

Table created.

SQL> ed
Wrote file afiedt.buf

  1  begin
  2    for x in (select *
  3                from user_tab_cols
  4               where column_name != UPPER(column_name))
  5    loop
  6      execute immediate 'ALTER TABLE ' || x.table_name ||
  7        ' RENAME column "' || x.column_name || '"' ||
  8        ' TO ' || upper(x.column_name);
  9    end loop;
 10* end;
SQL> /

PL/SQL procedure successfully completed.

SQL> desc foo
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 X                                                  NUMBER

نصائح أخرى

أفترض هنا عن طريق "الحقول" تقصد "أسماء الأعمدة".

ضع في اعتبارك أن أسماء الأعمدة في Oracle ليست حساسة لحالة الأحرف إلا إذا قمت بوضع علامات اقتباس عند إنشاء الجدول. ليس من الجيد استخدام علامات الاقتباس حول أسماء الأعمدة عند إنشاء الجدول. وبعبارة أخرى، إذا قمت بإنشاء الجدول مثل هذا:

CREATE TABLE FOO (
  colUMN1 varchar2(10),
  CoLumn2 number(38)
)

ثم لا يزال بإمكانك تشغيل عبارات تحديد مثل هذا:

SELECT column1, column2 FROM FOO

يمكنك أيضا القيام بذلك:

SELECT COLUMN1, COLUMN2 FROM FOO

لاحظ أيضا أنه إذا قمت بتشغيل هذا الاستعلام، فسترى أن Oracle تخزين أسماء الأعمدة كحرف كبيرة في قاموس البيانات:

SELECT * FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'FOO'

لذلك ليس هناك حاجة لإعادة تسمية هذه الأعمدة إلى كل الأحرف الكبيرة. يمكن أن تستخدم الاستعلامات التي تكتبها جميع أسماء الأعمدة الكبيرة (على افتراض أن الجداول لم يتم إنشاؤها باستخدام علامات اقتباس حول أسماء الأعمدة) وسوف تعمل بشكل جيد. إنها بالفعل فكرة سيئة محاولة إجبارهم على حساسة لحالة الأحرف.

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