Hallo Robi,
erstelle dir doch mit folgenden kleinen Programm eine View.
PHP-Code:
h dftactgrp(*no)
d MakeView pr ExtPGM('MAKEVIEW')
d View_Lib 10
d View_Name 10
d File_Lib 10
d File_Name 20
d MakeView pi
d View_Lib 10
d View_Name 10
d File_Lib 10
d File_Name 20
d
d True c *On
d False c *Off
d
d String_SQL s 32766 Inz( *Blanks )
d String_SQL1 s 32766 Inz( *Blanks )
d
d DS_Satz ds Qualified
d FeldName 10
d Type 8
d Laenge 5s 0
d Scale 5s 0
/free
*InLr = true;
Exec SQL set option commit=*none;
String_SQL = 'Create view ' + %Trim( View_Lib ) + '/' +
%Trim( View_Name ) + ' as (Select ';
String_SQL1 = 'Select sys_cname, Cast(ColType as Char(8)), ' +
'Cast(length as dec(5, 0)), ' +
'case when scale is NULL then 0 else Cast(scale as dec(5, 0)) end' +
' from syscolumns where sys_tname=''' + %Trim( File_Name ) +
''' and sys_dname=''' + %Trim( File_Lib ) + '''';
Exec SQL Declare CursorXX Cursor For String_SQL1;
Exec SQL Prepare String_SQL1 From :String_SQL1;
Exec SQL Open CursorXX;
DoW sqlcod >= 0 and sqlcod <= 100;
Exec SQL Fetch Next From CursorXX into :DS_Satz;
If sqlcod <> 0;
Leave;
EndIf;
ExSr SR_Work;
EndDo;
Exec SQL Close CursorXX;
String_SQL = %SubSt( %Trim( String_SQL ) : 1 :
%Len( %Trim( String_SQL ) ) -1);
String_SQL = %Trim( STring_SQL ) +
' from ' + %Trim( File_Lib ) + '/' +
%Trim( File_Name) + ')';
Exec SQL Execute Immediate :String_SQL;
BegSr SR_Work;
Select;
When ds_satz.type = 'DECIMAL' or
ds_satz.type = 'NUMERIC';
String_SQL = %Trim( String_SQL ) +
' Cast( ' + %Trim(ds_satz.feldname) +
' as Dec(' +%Trim(%Char(ds_satz.Laenge)) + ', ' +
%Trim(%Char(ds_satz.Scale)) + ')) as ' +
%Trim(ds_satz.feldname) + ', ';
When ds_satz.type = 'CHAR';
String_SQL = %Trim( String_SQL ) +
' Cast( ' + %Trim(ds_satz.feldname) +
' as Char(' +%Trim(%Char(ds_satz.Laenge)) + ')) ' +
' as ' + %Trim(ds_satz.feldname) + ', ';
EndSl;
EndSr;
/end-free
Eventuell musst du dir in der SR_Work noch weitere Feldtype bearbeiten.
Auch sollte keine View mit dem Namen in der Lib schon existieren.
Aufruf mit
Call Makeview (ViewLib ViewName Mylib MyFile)
Gruß
Ronald
Bookmarks