29.7. ��̬ SQL

���������£�Ӧ��Ҫִ�еľ���� SQL �������дӦ�õ�ʱ����Ѿ�֪���ˡ� ��������ijЩ����£�SQL �����������ʱ�������ⲿ�������ṩ�ġ� ����������£����Dz���ֱ���� C ����Ƕ�� SQL ��䣬�����и����ƿ�����������÷���һ���ִ���������κ� SQL ��䡣

ִ������ SQL �����򵥵ķ�����ʹ�� EXECUTE IMMEDIATE ������磺

EXEC SQL BEGIN DECLARE SECTION;
const char *stmt = "CREATE TABLE test1 (...);";
EXEC SQL END DECLARE SECTION;

EXEC SQL EXECUTE IMMEDIATE :stmt;

�㲻��������취ִ�м������ݵ���䣨Ҳ����˵��SELECT ����

ִ������ SQL ���ĸ�ǿ��ķ�����׼����Щ���һ�Σ�����ִ����Щ׼���õ���������Ρ� ����Ҳ����׼��һ���ձ�����汾��Ȼ��ͨ���滻һЩ������ ִ��һ���ض��İ汾����׼������ʱ�������Ժ���Ҫ�滻�����ĵط���дһ���ʺš����磺

EXEC SQL BEGIN DECLARE SECTION;
const char *stmt = "INSERT INTO test1 VALUES(?, ?);";
EXEC SQL END DECLARE SECTION;

EXEC SQL PREPARE mystmt FROM :stmt;
 ...
EXEC SQL EXECUTE mystmt USING 42, 'foobar';

�������ִ�е���䷵����ֵ����ô����һ�� INTO �Ӿ䣺

EXEC SQL BEGIN DECLARE SECTION;
const char *stmt = "SELECT a, b, c FROM test1 WHERE a > ?";
int v1, v2;
VARCHAR v3;
EXEC SQL END DECLARE SECTION;

EXEC SQL PREPARE mystmt FROM :stmt;
 ...
EXEC SQL EXECUTE mystmt INTO v1, v2, v3 USING 37;

һ�� EXECUTE ���������һ�� INTO �Ӿ䣬 һ�� USING �Ӿ䣬Ҳ�����������л���������û�С�

����㲻����Ҫ��׼���õ���䣬��Ӧ���ͷ�����

EXEC SQL DEALLOCATE PREPARE name;