هل هناك حد لحجم نص SQL في خطوة/إجراء PeopleSoft App Engine SQL؟

StackOverflow https://stackoverflow.com/questions/1739622

سؤال

أتلقى الخطأ التالي:AeSymResolveStatement [775] ...خطأ Meta-SQL في الموضع 34338 أو بالقرب منه في العبارة (108,512).يبلغ طول عبارة SQL نفسها أكثر من 40.000 حرف، ومن هنا يأتي السؤال.

قاعدة البيانات أوراكل.يعمل على الأدوات 8.49.24.

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

المحلول

وليس هناك مثل هذا الحد.

ويمكنك تأكيد هذا بنفسك عن طريق إنشاء SQL مثل:

select 'x' from PS_INSTALLATION where 
      1 = 1 and 
      1 = 1 and
      1 = 1 and
      1 = 1 and
      /* ... copy paste '1 = 1 and' 90000 times or so times more */
      1 = 1

وعلى الرغم من أنه يجعل pside بطيئة جدا، ويحفظ ويؤكد الغرامة فقط.

نصائح أخرى

وأنا أعلم أن هناك حدود لحجم SQL المستخدمة في تطبيق محرك (SQL الخطوة). كنت قد تلقي مرة واحدة في خطأ مماثل بينما كان يحاول استخدام SQL طويلة بشكل استثنائي في محرك التطبيقات.

وأنا لن يفاجأ إذا ينطبق هذا الحد نفسه إلى SQL كائنات.

لعلاج هذه المشكلة، وكنت قادرا على تقسيم SQL إلى 2 (كان عبارة تحديث). نأمل أن هذا ممكن في الحالة الخاصة بك أيضا.

وهناك حدود في PeopleCode، ويرجع ذلك أساسا إلى القيود المفروضة على طول السلسلة، ولكن لم اجد حد على البيانات SQL المخزنة.

أنا شخصياً سأفكر في تقسيم البيان إلى أجزاء بطريقة ما.

يمكنك:

  • استخدام آلية التكرار المضمنة في محركات التطبيقات
  • استخدم مزيجًا من SQL وPeopleCode
  • استخدم جدولًا مؤقتًا وقم بتنفيذ SQL متوسطة، وقم بتخزينها في الجدول المؤقت

وبصرف النظر عن إعطاء قاعدة البيانات الخاصة بك نوبة قلبية، ناهيك عن DBA عندما يرى البيان في شاشة SQL.أنت توفر على نفسك عالمًا من الألم إذا اضطررت إلى إلقاء نظرة على البيان مرة أخرى.

أعتقد أنه يتم تخزين وحدات SQL في محركات التطبيقات على هيئة فترات طويلة، لذا سيكون حجمها 4 جيجابايت ضمن Oracle، وهو شيء ضخم بالمثل ضمن DB2.

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