//这个结构并不对应具体的表,所以模板必须手工写
// 你可以看到,这个select 6个字段,分别进行代码变换。
static T_PkgType PARTTERN_type[]={
{CH_CHAR,49,"c.table_name",0,-1},
{CH_CHAR,49,"c.column_name"},
{CH_SHORT,sizeof(short),
"decode(data_type, 'CHAR',1, 'VARCHAR',1, 'VARCHAR2',1, 'DATE',129,'FLOAT',8, "
"'LONG',126, 'NUMBER',decode(nvl(DATA_SCALE,0),0, "
"decode(nvl(data_precision,0), 0,257, 1,2, 2,2, 3,3, 4,4, 5,4, 6,4, 7,4, 8,4,"
"9,4, 10,6, 11,6, 12,6, 13,6, 14,6, 15,6, 16,6, 17,6, 18,6, 257),8),257) "
"Fld_Column_Type"},
{CH_SHORT,sizeof(short),"decode(data_type, 'CHAR',data_length+1, 'VARCHAR',data_length+1,"
"'VARCHAR2',data_length+1, 'DATE',20,'FLOAT',8,'LONG',-1, 'NUMBER', "
"decode(nvl(DATA_SCALE,0),0,decode(nvl(data_precision,0), 0,35, 1,1, 2,1, 3,2, "
"4,4, 5,4, 6,4, 7,4, 8,4, 9,4, 10,8, 11,8, 12,8, 13,8, 14,8, 15,8, 16,8, 17,8, "
"18,8, 257),8),35) "
"Fld_Column_Len"},
{CH_CHAR,30,"decode(data_type, 'CHAR',null, 'VARCHAR',null, 'VARCHAR2',null, "
"'DATE','YYYY-MM-DD HH24:MI:SS','FLOAT','%%lg','LONG',null, "
"'NUMBER',decode(nvl(DATA_SCALE,0),0,null,"
"'%%'||to_char(data_precision+2)||'.'||to_char(DATA_SCALE)||'lf'),null) "
"Fld_Format"},
{CH_SHORT,sizeof(short),"k.position"},
{-1,0,0,0}
};
还需要公告一个数据结构:
typedef struct {
char Fld_Tlb_Name[49];
char Fld_Column_Name[49];
short Fld_Column_Type;
short Fld_Column_Len;
char Fld_Format[30];
short Fld_PK;
} PARTTERN_s;
二者是完全对应的。
[ 本帖最后由 yulihua49 于 2008-11-21 16:57 编辑 ] |