ecpg
ecpg â вÑÑÑоеннÑй C-пÑепÑоÑеÑÑÐ¾Ñ SQL
СинÑакÑиÑ
ecpg [паÑамеÑÑ...] Ñайл...
ÐпиÑание
ecpg â ÑÑо вÑÑÑоеннÑй SQL пÑепÑоÑеÑÑÐ¾Ñ Ð´Ð»Ñ Ð¿ÑогÑамм, напиÑаннÑÑ
на ÑзÑке C. Ðн пÑеобÑазÑÐµÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ð½Ð° C, ÑодеÑжаÑие SQL-вÑÑажениÑ, заменÑÑ Ð¸Ñ
вÑзовами вÑÑÑоеннÑÑ
ÑÑнкÑий. ÐолÑÑаемÑе на вÑÑ
оде ÑÐ°Ð¹Ð»Ñ Ð¼Ð¾Ð¶Ð½Ð¾ заÑем ÑкомпилиÑоваÑÑ Ð¸ ÑкомпоноваÑÑ.
ecpg пÑеобÑазÑÐµÑ ÐºÐ°Ð¶Ð´Ñй Ñайл, пеÑеданнÑй в паÑамеÑÑаÑ
, в ÑооÑвеÑÑÑвÑÑÑий Ñайл на C. ÐÑли Ð¸Ð¼Ñ Ð²Ñ
одного Ñайла Ñказано без ÑаÑÑиÑениÑ, подÑазÑмеваеÑÑÑ .pgc. Указанное имÑ, но Ñ ÑаÑÑиÑением .c, ÑÑановиÑÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ вÑÑ
одного Ñайла. ÐеÑеопÑеделиÑÑ Ð¸Ð¼Ñ Ð²ÑÑ
одного Ñайла можно, воÑполÑзовавÑиÑÑ Ð¿Ð°ÑамеÑÑом -o.
ÐÑли в каÑеÑÑве имени вÑ
одного Ñайла Ñказано -, ecpg ÑиÑÐ°ÐµÑ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Ñ ÑÑÑÑойÑÑва ÑÑандаÑÑного ввода (и вÑÐ²Ð¾Ð´Ð¸Ñ ÑезÑлÑÑÐ°Ñ Ð² ÑÑандаÑÑнÑй вÑвод, еÑли не задан паÑамеÑÑ -o).
ÐаннÑй Ñаздел не ÑодеÑÐ¶Ð¸Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð²ÑÑÑоенного SQL-ÑзÑка. ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии Ñм. ÐлавÑ 32.
ÐаÑамеÑÑÑ
ecpg пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð² каÑеÑÑве аÑгÑменÑов:
-cÐвÑомаÑиÑеÑки генеÑиÑоваÑÑ ÐºÐ¾Ð´, напиÑаннÑй на ÑзÑке C, из кода SQL. СейÑÐ°Ñ ÑÑо ÑпÑаведливо длÑ
EXEC SQL TYPE.-CÑежимУÑÑановиÑÑ Ñежим ÑовмеÑÑимоÑÑи;
ÑÐµÐ¶Ð¸Ð¼Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ Ð·Ð½Ð°ÑениеINFORMIXилиINFORMIX_SE.-DÑимволÐпÑеделиÑÑ Ñимвол наÑала команд C-пÑепÑоÑеÑÑоÑа.
-hÐбÑабаÑÑваÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾ÑнÑе ÑайлÑ. Ðогда добавлÑеÑÑÑ ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ, ÑаÑÑиÑением вÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñайла ÑÑановиÑÑÑ Ð½Ðµ
.c, а.h, и ÑаÑÑиÑением Ð²Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñайла по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑиÑаеÑÑÑ Ð½Ðµ.pgc, а.pgh. ÐÑоме ÑÑого Ñ Ð´Ð°Ð½Ð½Ñм паÑамеÑÑом подÑазÑмеваеÑÑÑ-c.-iТакже ÑазбиÑаÑÑ Ð¸ ÑиÑÑемнÑе вклÑÑениÑ.
-IкаÑалогУказаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй пÑÑÑ Ð²ÐºÐ»ÑÑаемÑÑ Ñайлов, иÑполÑзÑемÑй пÑи вÑполнении
EXEC SQL INCLUDE. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ.(ÑекÑÑий каÑалог),/usr/local/include, каÑалог, задаваемÑй пÑи компилÑÑии Postgres Pro (обÑÑно â/usr/local/pgsql/include), и/usr/include, в поÑÑдке, как ÑÑо пеÑеÑиÑлено.-oимÑ_ÑайлаÐадаÑÑ
Ð¸Ð¼Ñ Ñайла, в коÑоÑÑй пÑогÑаммаecpgдолжна вÑводиÑÑ ÑезÑлÑÑаÑ. Указание-o -напÑавлÑÐµÑ ÑезÑлÑÑÐ°Ñ Ð² ÑÑÑÑойÑÑво ÑÑандаÑÑного вÑвода.-rпаÑамеÑÑÐпÑеделÑÐµÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ вÑемени иÑполнениÑ.
Ð¤Ð»Ð°Ð³Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑинимаÑÑ ÑледÑÑÑие знаÑениÑ:no_indicatorÐÑполÑзоваÑÑ ÑпеÑиалÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñений null. ÐÑÑоÑиÑеÑки некоÑоÑÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ÑполÑзÑÑÑ Ñакой Ð¿Ð¾Ð´Ñ Ð¾Ð´.
prepareСÑоÑмиÑоваÑÑ Ð¿Ð¾Ð´Ð³Ð¾ÑовленнÑе вÑÑажениÑ. libecpg ÑÑоÑмиÑÑÐµÑ ÐºÐµÑ Ð¿Ð¾Ð´Ð³Ð¾ÑовленнÑÑ Ð²ÑÑажений и бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¸Ñ Ð¿Ñи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи повÑоÑно. Ð ÑлÑÑае пеÑÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐµÑа, libecpg оÑÐ²Ð¾Ð±Ð¾Ð´Ð¸Ñ Ð¿Ð°Ð¼ÑÑÑ Ð·Ð° ÑÑÑÑ Ð²ÑÑеÑÐ½ÐµÐ½Ð¸Ñ Ð½Ð°Ð¸Ð¼ÐµÐ½ÐµÐµ иÑполÑзÑемÑÑ Ð²ÑÑажений.
questionmarksРазÑеÑÐ°ÐµÑ Ð¸ÑполÑзоваÑÑ Ð·Ð½Ð°Ðº вопÑоÑа в каÑеÑÑве аÑгÑменÑа подÑÑановки в ÑелÑÑ ÑовмеÑÑимоÑÑи. Ранее ÑÑо бÑло поведением по ÑмолÑаниÑ.
-tÐклÑÑиÑÑ Ð°Ð²ÑомаÑиÑеÑкÑÑ ÑикÑаÑÐ¸Ñ ÑÑанзакÑий. Ð ÑÑом Ñежиме ÐºÐ°Ð¶Ð´Ð°Ñ SQL-команда бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки ÑикÑиÑоваÑÑÑÑ, пока не бÑÐ´ÐµÑ Ñвно вклÑÑена в блок ÑÑанзакÑии. Ð Ñежиме по ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑикÑиÑÑÑÑÑÑ Ð»Ð¸ÑÑ Ð¿Ñи Ñвном вÑзове
EXEC SQL COMMIT.-vÐÑвеÑÑи инÑоÑмаÑÐ¸Ñ Ð¾ веÑÑии, а Ñакже пÑÑÑÑ Ð¿Ð¾Ð¸Ñка вклÑÑаемÑÑ Ñайлов.
--versionÐÑвеÑÑи веÑÑÐ¸Ñ ecpg.
-?--helpÐÑвеÑÑи ÑпÑÐ°Ð²ÐºÑ Ð¿Ð¾ команде ecpg.
ÐамеÑаниÑ
ÐÑи компилÑÑии полÑÑеннÑÑ
Ñайлов, компилÑÑÐ¾Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ имеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð½Ð°Ð¹Ñи заголовоÑнÑе ÑÐ°Ð¹Ð»Ñ ECPG в каÑалоге вклÑÑений Postgres Pro. ÐÐ»Ñ ÑÑого можно иÑполÑзоваÑÑ Ñлаг -I во вÑÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»ÑÑии, напÑимеÑ, -I/usr/local/pgsql/include.
ÐÑогÑÐ°Ð¼Ð¼Ñ Ð½Ð° C Ñо вÑÑÑоеннÑм SQL необÑ
одимо ÑкомпоноваÑÑ Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой libecpg, напÑимеÑ, иÑполÑзÑÑ Ñлаг компоновÑика -L/usr/local/pgsql/lib -lecpg.
Ðмена каÑалогов, Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑÐ¸Ñ Ð´Ð»Ñ ÑÑÑановки, можно найÑи в Ñазделе pg_config.
ÐÑимеÑÑ
ÐÑли имееÑÑÑ Ð¸ÑÑ
однÑй Ñайл на C prog1.pgc Ñо вÑÑÑоеннÑм SQL, можно ÑоздаÑÑ Ð¸ÑполнÑемÑÑ Ð¿ÑогÑаммÑ, иÑполÑзÑÑ ÑледÑÑÑÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´:
ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg