ECPG(1) PostgreSQL 18.6 Documentation ECPG(1)

ecpg - پیش‌پردازندهٔ C برای SQL تعبیه‌شده

ecpg [option...] file...

ecpg پیش‌پردازندهٔ SQL تعبیه‌شده (embedded SQL) برای برنامه‌های C است. این ابزار برنامه‌های C حاوی دستورات تعبیه‌شدهٔ SQL را با جایگزین کردن فراخوانی‌های SQL با فراخوانی‌های توابع خاص، به کد عادی C تبدیل می‌کند. سپس فایل‌های خروجی می‌توانند با هر زنجیره ابزار کامپایلر C پردازش شوند.

ecpg هر فایل ورودی مشخص‌شده در خط فرمان را به فایل خروجی C متناظر تبدیل می‌کند. اگر نام یک فایل ورودی پسوندی نداشته باشد، پسوند .pgc در نظر گرفته می‌شود. برای ایجاد نام فایل خروجی، پسوند فایل با .c جایگزین خواهد شد. با این حال، می‌توان نام فایل خروجی را با استفاده از گزینهٔ -o تغییر داد.

اگر نام فایل ورودی صرفاً - باشد، ecpg برنامه را از ورودی استاندارد می‌خواند (و در خروجی استاندارد می‌نویسد، مگر اینکه با -o تغییر داده شود).

این صفحهٔ راهنما زبان تعبیه‌شدهٔ SQL را توصیف نمی‌کند. برای اطلاعات بیشتر در این رابطه، فصل 34 را ببینید.

ecpg آرگومان‌های خط فرمان زیر را می‌پذیرد:

-c

تولید خودکار کدهای خاص C از کدهای SQL. در حال حاضر، این قابلیت برای EXEC SQL TYPE کار می‌کند.

-C mode

تعیین حالت سازگاری. mode می‌تواند INFORMIX، INFORMIX_SE یا ORACLE باشد.

-D symbol[=value]

تعریف یک نماد پیش‌پردازنده، معادل با دستورالعمل EXEC SQL DEFINE. اگر هیچ مقداری (value) مشخص نشود، نماد با مقدار 1 تعریف می‌شود.

-h

پردازش فایل‌های سرایند (header). هنگامی که این گزینه مشخص شود، پسوند فایل خروجی به‌جای .c به .h تبدیل می‌شود و پسوند پیش‌فرض فایل ورودی به‌جای .pgc برابر با .pgh خواهد بود. همچنین، گزینهٔ -c اجباراً فعال می‌شود.

-i

تجزیه فایل‌های سرایند سیستمی (system include files) نیز انجام شود.

-I directory

مشخص کردن یک مسیر include اضافی، که برای یافتن فایل‌های ضمیمه‌شده از طریق EXEC SQL INCLUDE استفاده می‌شود. مقادیر پیش‌فرض به ترتیب عبارتند از: . (دایرکتوری جاری)، /usr/local/include، دایرکتوری include مربوط به PostgreSQL که هنگام کامپایل تعریف شده است (پیش‌فرض: /usr/local/pgsql/include)، و /usr/include.

-o filename

مشخص می‌کند که ecpg باید تمام خروجی خود را در filename داده‌شده بنویسد. برای ارسال تمام خروجی به خروجی استاندارد، از -o - استفاده کنید.

-r option

انتخاب رفتار زمان اجرا (run-time). Option می‌تواند یکی از موارد زیر باشد:

no_indicator

عدم استفاده از نشانگرها (indicators) و در عوض استفاده از مقادیر خاص برای نمایش مقادیر null. از لحاظ تاریخی پایگاه‌های داده‌ای وجود داشته‌اند که از این روش استفاده می‌کردند.

prepare

آماده‌سازی (prepare) تمام دستورات پیش از استفاده از آن‌ها. کتابخانهٔ libecpg یک حافظهٔ پنهان (cache) از دستورات آماده‌شده نگه می‌دارد و در صورت اجرای مجدد یک دستور، از آن دوباره استفاده می‌کند. اگر حافظهٔ پنهان پر شود، libecpg دستوری را که کمتر از همه استفاده شده است آزاد خواهد کرد.

questionmarks

مجاز دانستن علامت سؤال به عنوان جای‌نگهدار (placeholder) به دلایل سازگاری. در گذشته‌های دور، این حالت پیش‌فرض بود.

-t

روشن کردن ثبت خودکار (autocommit) تراکنش‌ها. در این حالت، هر دستور SQL به‌طور خودکار ثبت (commit) می‌شود مگر اینکه درون یک بلوک صریح تراکنش قرار داشته باشد. در حالت پیش‌فرض، دستورات تنها زمانی ثبت می‌شوند که EXEC SQL COMMIT صادر شود.

-v

چاپ اطلاعات تکمیلی شامل نسخه و مسیر include.

--version

چاپ نسخهٔ ecpg و خروج.

-?
--help

نمایش راهنما دربارهٔ آرگومان‌های خط فرمان ecpg و خروج.

هنگام کامپایل فایل‌های کد C پیش‌پردازش‌شده، کامپایلر باید قادر باشد فایل‌های سرایند ECPG را در دایرکتوری include مربوط به PostgreSQL پیدا کند. بنابراین، ممکن است مجبور باشید هنگام فراخوانی کامپایلر از گزینهٔ -I استفاده کنید (برای مثال، -I/usr/local/pgsql/include).

برنامه‌هایی که از کد C حاوی SQL تعبیه‌شده استفاده می‌کنند باید با کتابخانهٔ libecpg پیوند (link) داده شوند؛ برای مثال با استفاده از گزینه‌های پیونددهندهٔ -L/usr/local/pgsql/lib -lecpg.

مسیر مناسب هر یک از این دایرکتوری‌ها برای نصب مورد نظر را می‌توان با استفاده از pg_config(1) به دست آورد.

اگر یک فایل منبع C حاوی SQL تعبیه‌شده با نام prog1.pgc دارید، می‌توانید با استفاده از توالی دستورات زیر یک برنامهٔ اجرایی بسازید:

ecpg prog1.pgc
cc -I/usr/local/pgsql/include -c prog1.c
cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg
2026 PostgreSQL 18.6