вот эта штука
CREATE PROCEDURE PROCEDURE5 (
PROCEDURENN VARCHAR(64)
) RETURNS (
CREPRC VARCHAR(4096)
) AS
DEclare variable tmpStr varchar (4096);
DEclare variable tmpStr1 varchar (4096);
DEclare variable tmpStr2 varchar (4096);
DEclare variable tmpStr3 varchar (4096);
BEGIN
tmpStr1='';
tmpStr='';
tmpStr2='';
tmpStr3='';
for select cast(VAP_PROPERTIES_ID as varchar(10))from VAP_PROPERTIES_OB into :tmpStr do
begin
tmpStr1=tmpStr1||' SELECT VVALUE from KOL_OBJECTS where VID = :V_ID and VP_ID ='||
tmpStr||' INTO :Prop'||tmpStr||'; ';
tmpStr2=tmpStr2||'Prop'||tmpStr||' VARCHAR(128),';
tmpStr3=tmpStr3||'Prop'||tmpStr||'='''';';
end
tmpStr2= tmpStr2||'VNAME VARCHAR(128), Vtype Integer, V_ID integer';
CrePrc = 'CREATE PROCEDURE '||:PROCEDURENN||' RETURNS ('||
tmpStr2||
') AS begin for select VAP_ID,VAP_OBJECTS_NAME,VAP_TYPES_ID from VAP_OBJECTS into :V_ID, :VNAME, :Vtype do begin '||
tmpStr3||
tmpStr1||
' suspend; end end';
suspend;
END
генерит такой текст:
CREATE PROCEDURE r RETURNS (Prop2001 VARCHAR(128),Prop2002 VARCHAR(128),Prop2003 VARCHAR(128),Prop2004 VARCHAR(128),Prop2005 VARCHAR(128),VNAME VARCHAR(128), Vtype Integer, V_ID integer) AS begin for select VAP_ID,VAP_OBJECTS_NAME,VAP_TYPES_ID from VAP_OBJECTS into :V_ID, :VNAME, :Vtype do begin Prop2001='';Prop2002='';Prop2003='';Prop2004='';Prop2005=''; SELECT VVALUE from KOL_OBJECTS where VID = :V_ID and VP_ID =2001 INTO :Prop2001; SELECT VVALUE from KOL_OBJECTS where VID = :V_ID and VP_ID =2002 INTO :Prop2002; SELECT VVALUE from KOL_OBJECTS where VID = :V_ID and VP_ID =2003 INTO :Prop2003; SELECT VVALUE from KOL_OBJECTS where VID = :V_ID and VP_ID =2004 INTO :Prop2004; SELECT VVALUE from KOL_OBJECTS where VID = :V_ID and VP_ID =2005 INTO :Prop2005; suspend; end end
он почему то не хочет отрабатывать при коннекте к Interbase через Ole DB, а вот через BDE отрабатывает, зараза
Впервые в жизни пишу хранимую процедуру, которая бы генерила текст другой хранимой процедуры. типа круто! :)))))