PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 29. ecpg - �� C ��Ƕ�� SQL | Fast Forward | Next |
���������������Ƕ��� SQL �����ﴦ�������Լ����档�кü��ַ���������ʩ���á�
�������;����һ���İ취������һ���ض��Ķ����� ���ض����������ʱ��ִ�����������ͨ����
EXEC SQL WHENEVER condition action;
condition ����������֮һ��
�����Ķ�������ִ��һ�� SQL ��䷢�������ʱ��ִ�С�
�����Ķ�������ִ��һ�� SQL ��䷢�������ʱ��ִ�С�
�����Ķ�������һ�� SQL �����������л���Ӱ�����е�����±� ִ�С��������������һ�������������ϲ��������������������
action ����������֮һ��
�����������˼������������Ժ��ԡ�����ȱʡ��
��ת��ָ���ı�ǩ��ʹ��һ�� C ��goto ��䣩��
��������ӡһ����Ϣ����Լ������ԭ�Ͷ����������á� ��Ϣ��ϸ�ڲ������á�
���� exit(1)��������ֹ�������С�
ִ�� C ��� break�����Ӧ��ֻ��ѭ������ switch �����ʹ�á�
��ָ���IJ�������ָ���� C ������
SQL ��ֻ�ṩ CONTINUE �� GOTO ��Ҳ�� GO TO��������
������һ�����ӣ�����ܿ������ڼij�������ڷ��������ʱ���ӡһ������Ϣ���ڷ��������ʱ���˳�����
EXEC SQL WHENEVER SQLWARNING SQLPRINT; EXEC SQL WHENEVER SQLERROR STOP;
��� EXEC SQL WHENEVER �� SQL Ԥ��������һ��ָʾ���� ������һ�� C ��䡣�����õĴ�����߾��涯��������������ֵ������˾�������� SQL ��䣬 �����ڵ�һ�� EXEC SQL WHENEVER �͵������������� SQL ���֮��Ϊͬһ����������������һ�������� ������ C �����ڲ������̿����������ġ����ԣ���������� C �����ѡ������������������Ч����
/* * ���� */ int main(int argc, char *argv[]) { ... if (verbose) { EXEC SQL WHENEVER SQLWARNING SQLPRINT; } ... EXEC SQL SELECT ...; ... }
/* * ���� */ int main(int argc, char *argv[]) { ... set_error_handler(); ... EXEC SQL SELECT ...; ... } static void set_error_handler(void) { EXEC SQL WHENEVER SQLERROR STOP; }
�����Ҫ��ǿ��Ĵ�������ƣ���ôǶ��� SQL �ӿ��ṩ��һ���� sqlca ��ȫ�ֱ���������һ���������涨��Ľṹ��
struct { char sqlcaid[8]; long sqlabc; long sqlcode; struct { int sqlerrml; char sqlerrmc[70]; } sqlerrm; char sqlerrp[8]; long sqlerrd[6]; char sqlwarn[8]; char sqlstate[5]; } sqlca;
����һ�����̵߳ij����ÿ���߳��Զ�����Լ��� sqlca �Ŀ����������ʽ�����ڴ���� C ȫ�ֱ��� errno����
sqlca ��������ʹ��������һ������ִ���г��ֶ��������ߴ�����ô sqlca ��ֻ�������һ������Ϣ��
��������� SQL ���ִ�й�����û�з������� ��ô sqlca.sqlcode ���� 0 ���� sqlca.sqlstate ����"00000"���������һ��������ߴ��� ��ô sqlca.sqlcode ���Ǹ������� sqlca.sqlstate ������ "00000"��һ�������� sqlca.sqlcode ��ʶһ�������������������IJ�ѯ�������С�sqlcode �� sqlstate ��������ͬ�Ĵ���ģʽ��������ϸ���ܡ�
������һ�� SQL ���ɹ�������ʺϸþ��������ô sqlca.sqlerrd[1] ������������е� OID���� sqlca.sqlerrd[2] ���� ����ص�������
�ڷ���������߾��������£�sqlca.sqlerrm.sqlerrmc ������һ�������ô�����ִ����ֶ� sqlca.sqlerrm.sqlerrml �����洢�� sqlca.sqlerrm.sqlerrmc ��Ĵ�����Ϣ�ij��ȣ�strlen() �Ľ���� �� C ����Ա��˵�����������ĵģ�����ע����Щ��Ϣ̫����������ܴ洢�ڶ����� sqlerrmc ��������ǻᱻ�ضϡ�
�ڷ������������£�sqlca.sqlwarn[2] ������Ϊ W�� ������������������£�����������Ϊ�� W ��ͬ�Ķ����������sqlca.sqlwarn[1] ����Ϊ W����ô����һ����ֵ�ڴ洢������������ʱ�ضϡ� ����κ�����Ԫ�����óɱ�ʾһ�����棬��ô sqlca.sqlwarn[0] ������Ϊ W��
�ֶ� sqlcaid��sqlcabc�� sqlerrp ��ʣ�µ� sqlerrd �Լ� sqlwarn Ԫ��Ŀǰû�а������õ���Ϣ��
�ṹ sqlca û���� SQL ���ﶨ�壬�����ںü������� SQL ���ݿ�ϵͳ�ﶨ���ˡ� ����ĺ��Ķ����ƣ������������д������ֲ��Ӧ�ã���ô��Ӧ����ϸ�о���ͬ��ʵ�֡�
�ֶ� sqlca.sqlstate �� sqlca.sqlcode ���ṩ�����������ֲ�ͬ��ģʽ�����ֶ��� SQL �������ˣ����� SQLCODE �� 1992 ��ı��汾���עΪ�����ģ������� 1999 ��汾�ﱻɾ���ˡ���ˣ�������Ӧ�ã�����ǿ�ҽ���ʹ�� SQLSTATE��
SQLSTATE ��һ�����ַ������顣����ַ�������ֵ���ߴ�д��ĸ�� ������ִ�����߾��������Ĵ��롣SQLSTATE �и���λ���ģʽ��ͷ�����ַ���ʶ������ͨ����ʾ������������� �������ַ���ʾ�ڸ�ͨ�����е����ࡣ�ɹ���״̬���� 00000 ��ʶ�ġ�SQLSTATE �����ڴ�����ط����Ƕ����� SQL ����ġ�PostgreSQL ����������֧�� SQLSTATE ������룻�����Ӧ����ʹ������������ģʽ����ʵ�ַdz��ߵ�һ���ԡ�������Ϣ����� Appendix A��
SQLCODE �Ƿ����Ĵ������ģʽ����һ���������� 0 ��ʶ�ɹ���������ʶ���Ŷ�����Ϣ�ijɹ���������ʾһ������SQL ��ֻ����������ֵ +100�� �����ʾ������������л���Ӱ�������У�����û���ض��ĸ���ֵ�� ��ˣ����ģʽֻ��ʵ�ֺ�����һ���Բ��Ҳ�û��һ����λ��Ĵ�����ơ� ��ʷ�ϣ�PostgreSQL ��Ƕ��� SQL ������Ϊ�Լ�ʹ�ø�����һЩ SQLCODE ����ֵ����Щ���������г����������ǵ���ֵ�ͷ���������ס��Щ�Dz�����ֲ������ SQL ʵ����ȥ�ġ� Ϊ�˼�Ӧ���� SQLSTATE ģʽ����ֲ�����ǻ��г��� SQLSTATE�� ������������ģʽ֮��û��һ��һ����һ�Զ��ӳ�䣨������Զࣩ���������κ�������㶼Ӧ�òο��� Appendix A ���г���ȫ��SQLSTATE��
��Щ���Ѿ���ֵ�� SQLCODE ��ֵ��
������������ڴ��Ѿ��ľ���SQLSTATE YE001��
����Ԥ������������һЩ�ⲻ֪���Ķ��������������е�Ԥ�������汾�Ϳ�汾��ͬ����SQLSTATE YE002��
����ζ��������������˱�����Ԥ��Ҫ�������������SQLSTATE 07001 ���� 07002��
����ζ��������������˱�����Ԥ��Ҫ�ٵ�����������SQLSTATE 07001 ���� 07002��
����ζ�Ų�ѯ�����˶��У��������ֻ���洢һ�н�������磬��Ϊ�����ı����������飩����SQLSTATE 21000��
���������� int ���ͣ������ݿ�����������������ͣ� ���Ұ��������ͳ� int ���͵���ֵ����ʹ�� strtol() ������ת������SQLSTATE 42804��
���������� unsigned int �����ݿ�����������������ͣ� ���Ұ��������ͳ� unsigned int ���͵���ֵ�� ��ʹ�� strtoul() ������ת������SQLSTATE 42804��
���������� float �����ݿ�����������������ͣ� ���Ұ��������ͳ� float ���͵���ֵ�� ��ʹ�� strtod() ������ת������SQLSTATE 42804��
����ζ����������������Ϊ bool �Ķ����ݿ��е����ݼȲ���'t' Ҳ���� 'f'����SQLSTATE 42804��
���� PostgreSQL ������������ǿյġ� �����ͨ��������Ƕ�� SQL ��������֣������������һ���ڲ����� ��SQLSTATE YE002��
������һ����ֵ������û���ṩ��ֵָʾ����������SQLSTATE 22002��
��һ����Ҫ����ĵط�ʹ����һ����ͨ��������SQLSTATE 42804��
��һ����Ҫ����ĵط����ݿⷵ����һ����ͨ������ ��SQLSTATE 42804��
������ͼ����һ�������ڵ����ӡ���SQLSTATE 08003��
������ͼ����һ�����ڵ�δ�����ӣ�����һ���ڲ�������SQLSTATE YE002��
�����ڳ���ʹ�õ���仹û���á���SQLSTATE 26000��
������������û���ҵ���������ͼʹ�õ����û�����ã�SQLSTATE 33000��
��������������������������SQLSTATE 07009��
������һ���Ƿ����������������һ���ڲ�������SQLSTATE YE002��
��һ����̬����ִ�еĹ����У����ݿⷵ����һ������ֻ������������������ֵ�ͣ�SQLSTATE 07006����
��ִ��һ����̬���Ĺ����У����ݿⷵ����һ����������ֵ������������������ֵ�͡���SQLSTATE 07006��
һЩ PostgreSQL ���������µĴ��� ��Ϣ�������� PostgreSQL �������Ĵ�����Ϣ��
PostgreSQL �������Dz����������ύ�� ���ع��������SQLSTATE 08007��
�����ݿ��������ͼû�гɹ���SQLSTATE 08001����
���Ǹ�������������ʾ���һ������������ߴ��������У����������α�Ľ�β����SQLSTATE 02000��