осжquж حوض

ساخت وبلاگ

ما کارهای دسته ای زیادی در اوراکل داریم که پس از پردازش چند سوابق مرتکب می شویم. این مشاغل دسته ای در برخی از زیر مجموعه ها فرآیند و بیانیه های کنترل معاملات در صورت موفقیت و بازگشت در صورت عدم موفقیت انجام می شود.

در حین تبدیل به PostgreSQL ، ما در همان قالب با تعهد و بازپرداخت تبدیل شدیم. اما در حالی که اجرای آن با پیام خطای زیر به پایان رسید.

خطا: زمینه خاتمه معاملات نامعتبر: عملکرد PL/PGSQL inline_code_block خط 29 در تعهد

در حین بررسی مدیریت معامله در postgresql "https://www. postgresql. org/docs/12/plpgsql-transactions. html" "در مورد فرمی که پشتیبانی نمی شود صحبت می کند.

کنترل معاملات فقط در تماس و یا انجام دعوت از سطح بالا یا تماس تو در تو امکان پذیر است یا دعوت ها را بدون هیچ دستور مداخله دیگری انجام می دهد. به عنوان مثال ، اگر پشته تماس با PROC1 () تماس بگیرید proc Proc2 () → با PROC3 () تماس بگیرید ، آنگاه رویه های دوم و سوم می توانند اقدامات کنترل معامله را انجام دهند. اما اگر پشته تماس با PROC1 () → Func2 () را انتخاب کنید → با PROC3 () تماس بگیرید ، پس آخرین روش نمی تواند کنترل معامله را انجام دهد ، به دلیل انتخاب بین.

My Call has : CALL Batch Job => SELECT function Used in SQL Statements ==>روش تماسما فقط در "کار دسته تماس" کنترل معامله داریم.

کد شبه مانند: برجسته شده در Bold یک تماس عملکردی است. در هنگام اعدام ، همانطور که ما از توابع در این روش استفاده می کنیم ، ناکام است.

آیا می توانم به این موضوع کمک کنم ، چگونه می توانم مشاغل دسته ای را همانطور که می خواستیم در چند فواصل 20000 سوابق انجام دهیم ، پیاده سازی کنم؟

ما نمی توانیم این عملکرد را از بیانیه حذف کنیم زیرا مقدار آن به مقدار ستون بستگی دارد.

ایجاد یا جایگزین کردن روش test_transaction () زبان 'plpgsql' security as $ body $ declare g_last_update_user_system varchar2 (6): = 'system' ؛g_last_update_module_batch varchar2 (5): = 'batch' ؛

g_cntr_loading_expired tms_container_loading. status_code ٪ نوع: = '90' ؛g_dg_manifest_deleted tms_dg_manifest. status_code ٪ نوع: = '80' ؛g_dg_manifest_completed tms_dg_manifest. status_code ٪ نوع: = '95' ؛

عددی v_num_day ؛v_batch_count numeric ؛V_LOG_Count Numeric: = 0 ؛v_local_batch_count numeric ؛شروع v_batch_count: = 0 ؛1 و COLATESCE (وضعیت_ کد ، '~') <>G_CNTR_LOADING_EXPIRED و CTID در (A. CTID را از TMS_CONTAINER_LOADING انتخاب کنید که در آن TMS $ VVD. IS_VESSEL_DEPARTED (VESSEL_VISIT_C ، TRUNC (CLOCK_TIMESTAMP () :: TIMESTAMP (0))) = 1 و Coalesce (وضعیت_code ، '~') <>G_CNTR_LOADING_EXPIRED محدوده 20000) ؛هنگام یافتن خارج شوید./ * اعمال در SQL */ دریافت تشخیص v_local_batch_count = row_count ؛v_batch_count: = v_batch_count + v_local_batch_count ؛مرتکب شدن؛حلقه پایان ؛v_log_count: = v_log_count + 1 ؛ورود به سیستم (v_batch_count ، 'tms_container_loading' ، null ، 'tms $ batch_job' ، v_log_count) ؛مرتکب شدن؛پایان؛$ Body $ ؛

با احترام، جگموهان

پاسخ: خطا: خاتمه معاملات نامعتبر: postgresql v12

من هولگر جاکوبز дата: 24 نوامبر 2020 ، 10:57:22

تعهد بعد از چند سوابق چیست؟چرا اجازه نمی دهیم که کل دسته از آن عبور کنند. در صورت بروز خطایی ، PostgreSQL به هر حال کل معامله را بازگرداند.

بر خلاف اوراکل ، PostgreSQL برخی از سوابق را مرتکب نمی شود ، در حالی که برخی دیگر در همان معامله شکست خوردند. به محض عدم موفقیت یک عملیات در یک معامله ، مرده است و تمام عملیات بعدی با شکست روبرو می شوند.

AM 23. 11. 20 UM 18:05 Schrieb Jagmohan Kaintura: سلام تیم ،

ما کارهای دسته ای زیادی در اوراکل داریم که پس از پردازش چند سوابق مرتکب می شویم. این مشاغل دسته ای در برخی از زیر مجموعه ها فرآیند و بیانیه های کنترل معاملات در صورت موفقیت و بازگشت در صورت عدم موفقیت انجام می شود.

در حین تبدیل به PostgreSQL ، ما در همان قالب با تعهد و بازپرداخت تبدیل شدیم. اما در حالی که اجرای آن با پیام خطای زیر به پایان رسید.

خطا: زمینه خاتمه معاملات نامعتبر: عملکرد PL/PGSQL inline_code_block خط 29 در تعهد

در حین بررسی مدیریت معامله در postgresql "https://www. postgresql. org/docs/12/plpgsql-transactions. html" "در مورد فرمی که پشتیبانی نمی شود صحبت می کند.

کنترل معاملات فقط در تماس و یا انجام دعوت از سطح بالا یا تماس تو در تو امکان پذیر است یا دعوت ها را بدون هیچ دستور مداخله دیگری انجام می دهد. به عنوان مثال ، اگر پشته تماس با PROC1 () تماس بگیرید proc Proc2 () → با PROC3 () تماس بگیرید ، آنگاه رویه های دوم و سوم می توانند اقدامات کنترل معامله را انجام دهند. اما اگر پشته تماس با PROC1 () → Func2 () را انتخاب کنید → با PROC3 () تماس بگیرید ، پس آخرین روش نمی تواند کنترل معامله را انجام دهد ، به دلیل انتخاب بین.

My Call has : CALL Batch Job => SELECT function Used in SQL Statements ==>روش تماسما فقط در "کار دسته تماس" کنترل معامله داریم.

کد شبه مانند: برجسته شده در Bold یک تماس عملکردی است. در هنگام اعدام ، همانطور که ما از توابع در این روش استفاده می کنیم ، ناکام است.

آیا می توانم به این موضوع کمک کنم ، چگونه می توانم مشاغل دسته ای را همانطور که می خواستیم در چند فواصل 20000 سوابق انجام دهیم ، پیاده سازی کنم؟

ما نمی توانیم این عملکرد را از بیانیه حذف کنیم زیرا مقدار آن به مقدار ستون بستگی دارد.

ایجاد یا جایگزین کردن روش test_transaction () زبان 'plpgsql' security as $ body $ declare g_last_update_user_system varchar2 (6): = 'system' ؛g_last_update_module_batch varchar2 (5): = 'batch' ؛

g_cntr_loading_expired tms_container_loading. status_code ٪ نوع: = '90' ؛g_dg_manifest_deleted tms_dg_manifest. status_code ٪ نوع: = '80' ؛g_dg_manifest_completed tms_dg_manifest. status_code ٪ نوع: = '95' ؛

عددی v_num_day ؛v_batch_count numeric ؛V_LOG_Count Numeric: = 0 ؛v_local_batch_count numeric ؛شروع v_batch_count: = 0 ؛1 و COLATESCE (وضعیت_ کد ، '~') <>G_CNTR_LOADING_EXPIRED و CTID در (A. CTID را از TMS_CONTAINER_LOADING انتخاب کنید که در آن TMS $ VVD. IS_VESSEL_DEPARTED (VESSEL_VISIT_C ، TRUNC (CLOCK_TIMESTAMP () :: TIMESTAMP (0))) = 1 و Coalesce (وضعیت_code ، '~') <>G_CNTR_LOADING_EXPIRED محدوده 20000) ؛هنگام یافتن خارج شوید./ * اعمال در SQL */ دریافت تشخیص v_local_batch_count = row_count ؛v_batch_count: = v_batch_count + v_local_batch_count ؛مرتکب شدن؛حلقه پایان ؛v_log_count: = v_log_count + 1 ؛ورود به سیستم (v_batch_count ، 'tms_container_loading' ، null ، 'tms $ batch_job' ، v_log_count) ؛مرتکب شدن؛پایان؛$ Body $ ؛

فارکس به زبان ساده...
ما را در سایت فارکس به زبان ساده دنبال می کنید

برچسب : نویسنده : طاهره ایرانی بازدید : <-PostHit-> تاريخ : دوشنبه 13 شهريور 1402 ساعت: 22:35