سؤال

مرحبا، أحاول الحصول على معلومات عن حزمة أوراكل مباشرة من PHP باستخدام OCI8:

$ sql = 'desc my_package'؛ $ stmt = oci_parse ($ conn، $ sql)؛ oci_execute ($ stmt)؛

هذه المرتجعات:

تحذير: oci_execute () [وظيفة. oci-execute]: ORA-00900: بيان SQL غير صالح في /oci8_test.php على السطر 16

أعرف أن الأمر يعمل كما جربته في SQLPlus.

هل يعلم احد كيف يحقق هذا.

شكرا

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

المحلول 2

تشك للردود، وأعتقد أنني وجدت إجابتي.

لذلك بالنسبة لأي شخص مهتم، كما قال فنسنت، أعتقد أن نجعلها تعمل عليك إنشاء "DESC". عرض Oracle لاستخدامه هو "User_Arguments"، يمكنك الحصول على أسماء الوظائف / الإجراءات، أسماء وسيطة وأنواعها، موقف الوسيطة، إلخ ...

حدد * من User_Argums حيث package_name = 'my_package'

نصائح أخرى

DESC هو أمر SQL Plus.

لقد كنت بعيدا عن أوراكل لبضع سنوات الآن، ولكن انظر إلى قاموس البيانات. على سبيل المثال للجداول التي يمكنك القيام بها أدناه. يجب أن يكون هناك شيء للحزم كذلك. desc my_table.

أي ما يعادل

SELECT 
column_name "Name", 
nullable "Null?",
concat(concat(concat(data_type,'('),data_length),')') "Type"
FROM user_tab_columns
WHERE table_name='TABLE_NAME_TO_DESCRIBE';

DESC هو SQL*Plus الأمر، لن ينجح SQL*Plus. وبعد يمكنك كتابة الخاصة بك DESC عن طريق الاستعلام عن مع البيانات من أي أداة:

SQL> SELECT column_name, data_type, data_length,
  2         data_precision, data_scale, nullable
  3    FROM all_tab_columns
  4   WHERE table_name = 'T';


COLUMN_NAME  DATA_TYPE  DATA_LENGTH DATA_PRECISION DATA_SCALE NULLABLE
------------ ---------- ----------- -------------- ---------- --------
COLUMN1      CHAR                 6                           Y
COLUMN2      CHAR                 6                           Y
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top