ما کارهای دسته ای زیادی در اوراکل داریم که پس از پردازش چند سوابق مرتکب می شویم. این مشاغل دسته ای در برخی از زیر مجموعه ها فرآیند و بیانیه های کنترل معاملات در صورت موفقیت و بازگشت در صورت عدم موفقیت انجام می شود.
در حین تبدیل به 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