 |
SoftTree Technologies
Technical Support Forums
|
|
Author |
Message |
martin.yu
Joined: 20 Sep 2007 Posts: 1 Country: Taiwan, Province of China |
|
Can't use SQL Assistant in DB2/400 (run in AS400) |
|
Can not use SQL Assistant in DB2/400 (run in AS400), who can help me !! tks...
|
|
Thu Sep 20, 2007 9:14 pm |
|
 |
SysOp
Site Admin
Joined: 26 Nov 2006 Posts: 7948
|
|
|
|
Hi,
You need to modify database catalog queries for DB2, which are available in SQL Assistant options and make them compatible with DB2 for iSeries. The pre-configured queries that come with SQL Assistant are for DB2 UDB version. so you need to change them for iSeries.
I cannot help with all queries as I don't have OS/400 nearby.
Here are just some ideas
The current query in options for DB2 Schemas is like this
 |
 |
select
RTRIM(schemaname), 'SC'
from
syscat.schemata
union all
select
RTRIM(t.grantee), 'SL'
from
(
select grantee
from syscat.dbauth
group by grantee
) t
order by 1 |
For iSeries you should change it as
 |
 |
SELECT DISTINCT TABLE_SCHEMA
FROM QSYS2.SYSTABLES
WHERE TABLE_TYPE IN ('T', 'P')
ORDER BY 1 |
The current query in options for DB2 objects is like this
 |
 |
select
tabname,
case when type in ('V','W') then 'VI' else 'TA' end
from
syscat.tables
where
tabschema = :SCHEMA_NAME
union all
select
routinename,
case
when functiontype = 'T' then 'TF'
when routinetype = 'F' then 'FU'
else 'PR' end
from
syscat.routines
where
routineschema = :SCHEMA_NAME
and routinetype in ('F','P') |
For iSeries you should change it as
 |
 |
SELECT ROUTINE_NAME,
CASE ROUTINE_TYPE WHEN 'FUNCTION' THEN 'FU' ELSE 'PR' END
FROM QSYS2.SYSROUTINES
WHERE ROUTINE_SCHEMA = :SCHEMA_NAME
AND ROUTINE_TYPE IN ('FUNCTION', 'PROCEDURE')
UNION ALL
SELECT TABLE_NAME,
CASE TABLE_TYPE WHEN 'V' THEN 'VI' ELSE 'TA' END
FROM QSYS2.SYSTABLES
WHERE TABLE_SCHEMA = :SCHEMA_NAME
AND TABLE_TYPE IN ('T', 'V') |
The current query in options for DB2 table/view columns is like this
 |
 |
select
colname,
case when typename in ('CHAR','VARCHAR') then typename CONCAT '(' CONCAT RTRIM(CHAR(length)) CONCAT ')' else typename end,
nulls
from
syscat.columns
where
tabschema = :SCHEMA_NAME
and tabname = :OBJECT_NAME
order by
colon |
For iSeries you should change it as
 |
 |
SELECT
COLUMN_NAME,
(
CASE
WHEN DATA_TYPE = 'VARCHAR' OR
DATA_TYPE = 'LONG VARCHAR' OR
DATA_TYPE = 'BLOB' OR
DATA_TYPE = 'CLOB' OR
DATA_TYPE = 'DBCLOB' OR
DATA_TYPE = 'GRAPHIC' OR
DATA_TYPE = 'VARGRAPHIC' OR
DATA_TYPE = 'LONG VARGRAPHIC' THEN RTRIM(DATA_TYPE) || '(' || RTRIM(CHAR(LENGTH)) || ')'
WHEN DATA_TYPE = 'CHARACTER' OR
DATA_TYPE = 'CHAR' THEN 'CHAR(' || RTRIM(CHAR(LENGTH)) || ')'
WHEN DATA_TYPE = 'DECIMAL' THEN 'DECIMAL(' || RTRIM(CHAR(NUMERIC_PRECISION)) || ',' || RTRIM(CHAR(NUMERIC_SCALE)) || ')'
ELSE DATA_TYPE
END
),
posstr(IS_NULLABLE, 'Y') NULLS
FROM QSYS2.SYSCOLUMNS
WHERE TABLE_SCHEMA = :SCHEMA_NAME
AND TABLE_NAME = :OBJECT_NAME
ORDER BY ORDINAL_POSITION |
And so on...
.
|
|
Thu Sep 20, 2007 10:05 pm |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|