PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 29. ecpg - �� C ��Ƕ�� SQL | Fast Forward | Next |
�� Section 29.4 ���㿴������δ�Ƕ��� SQL ������ִ�� SQL ��䡣 ��Щ�����Щֻʹ���˹̶�����ֵ����û���ṩһ�������û��ṩ����ֵ������еķ����� Ҳû���ṩ�ó�����ʲ�ѯ���ص���ֵ�ķ������������͵������������Ӧ���в����Ǻ����á� ������ϸ������������ C �����Ƕ��� SQL ���֮��ʹ��һ�ֱ��������������Ļ��ƴ������ݡ�
�� C ����� SQL ���֮�䴫��������Ƕ��� SQL ���ر�����Dz��ð�������������У� ������Ȼ���и��ָ���������Ҫ����������ȷ����ֵ�����ŵȵȣ�����ֻ��Ҫ�� SQL �����д�� C ���������֣�ǰһ��ð�ż��ɡ� ���磺
EXEC SQL INSERT INTO sometable VALUES (:v1, 'foo', :v2);
���������������� C ������һ���� v1����һ���� v2�� ����Ҳʹ��һ����ͨ�� SQL �ִ��ı������������㲢��������ֻʹ��ijһ�����ݡ�
������ SQL �������� C �����ķ�ʽ�� SQL ������κ���Ҫ���ʽ�ĵط��������á� �� SQL �������ǰ����õ� C �������� ����������
Ҫ�ӳ����������ݿ�����ݣ����磬��ѯ�еIJ��������ߴ����ݿ�������ص����ݣ� ������������ݵ� C ����������һ������ı�Ƕ���������������Ƕ��� SQL Ԥ�������ͻ�����Ҫ��ʲô��
�����������Ĵ��뿪ͷ
EXEC SQL BEGIN DECLARE SECTION;
������Ĵ������
EXEC SQL END DECLARE SECTION;
��������֮�䣬����ͨ�� C ��������������
int x; char foo[16], bar[16];
�ڳ�����������������������Ρ�
��Щ����Ҳͬʱ����ͨ C ��������ʽ���Ե�����ļ��У� ��ˣ����Dz����ٴ��������ǡ���Щ������ SQL ������ʹ�õı���������ͨ��һ������Щ����Ķ�����������
�ṹ�������ϵĶ���Ҳ������ DECLARE �����г��� ����Ԥ����������������Щ���ͣ���Ϊ����֪�����塣
��������� varchar ��ÿ��������ת����һ���� struct �����֡�������������������
varchar var[180];
ת����
struct varchar_var { int len; char arr[180]; } var;
����ṹ�ʺ��ں� SQL �������� varchar �����ݽ�����
������Ӧ���ܰ���ij������ɵ����ݴ��ݵ� SQL ��������ȥ�ˡ���������μ���һ����ѯ�Ľ���أ� Ϊ�����Ŀ�ģ�Ƕ��� SQL �ṩ�˳������� SELECT �� FETCH ��������塣 ��Щ������������� INTO �Ӿ䣬����������������ֵ�洢���ĸ����������
������һЩ���ӣ�
/* * ������������ * CREATE TABLE test1 (a int, b varchar(50)); */ EXEC SQL BEGIN DECLARE SECTION; int v1; VARCHAR v2; EXEC SQL END DECLARE SECTION; ... EXEC SQL SELECT a, b INTO :v1, :v2 FROM test;
���ԣ�INTO �Ӿ������ѡ���б�� FROM �Ӿ�֮�䡣ѡ���б�� INTO ������б��Ԫ�أ�Ҳ��Ŀ���б�����������ͬ��
������ʹ�� FETCH ��������ӣ�
EXEC SQL BEGIN DECLARE SECTION; int v1; VARCHAR v2; EXEC SQL END DECLARE SECTION; ... EXEC SQL DECLARE foo CURSOR FOR SELECT a, b FROM test; ... do { ... EXEC SQL FETCH NEXT FROM foo INTO :v1, :v2; ... } while (...);
����� INTO �Ӿ�����������������Ӿ���档
��Щ����ֻ��һ�μ���һ�С��������Ҫ������ܶ���һ�еĽ������ ��ô����Ҫʹ���α꣬�������ǵڶ���������ʾ��������
��������Ӳ��ܴ����ֵ��ʵ���ϣ���������ݿ���ץ��һ����ֵ����ô����ļ������ӻ��׳�һ������ Ҫ�ܹ������ݿ��д��ݿ�ֵ�����ߴ����ݿ��м�����ֵ������Ҫ��ÿ���������ݵ������������渽��һ����������������� ��ڶ�������������ָʾ�����������һ����־�� �������������Ƿ�Ϊ�գ����Ϊ�գ���ô������������������ֵ�Ϳ��Ժ��ԡ� ������һ������ȷ������ֵ�����ӣ�
EXEC SQL BEGIN DECLARE SECTION; VARCHAR val; int val_ind; EXEC SQL END DECLARE SECTION: ... EXEC SQL SELECT b INTO :val :val_ind FROM test1;
�����ֵ���ǿգ���ôָʾ������ val_ind �����㣬 ���ֵ�ǿգ���ô�����Ǹ�����
ָʾ����������һ����;�����������������ô����ʶ��ֵ���ǿգ� ��������ֵ�洢�������������ʱ�ض��ˡ�