Lookup conforme banco de dados

Olá Pessoal!

Estou com uma dificuldade em fazer um lookup conforme o banco de dados que estou trabalhando.

Minha intenção é trabalhar com vários bancos de dados no meu sistema.

Porém, tenho em algumas tabelas campos onde pesquiso via lookup. Estes campos são muito grandes (descrição de 250 posições), fazendo com que os formulários fiquem muito grande (horizontalmente). Desta forma, estou utilizando o comando SUBSTRING(campo, 1, 50) no lookup.

No Mysql e Sql Server o comando é SUBSTRING, porém no Oracle é SUBSTR.

E assim com outros comandos SQL, podem mudar de banco para banco.

Até mesmo em instruções SQL de insert ou update acontencem algumas diferenças:

ISNULL é para SQL Server,
IFNULL é para MySql
NVL é para Oracle.

O comando acima serve para verificar se o campo está nulo.

Alguém tem alguma ideia?

Obrigado desde já!

Um forte abraço!

Marlon.

Pode criar uma função no banco de dados e chamar sempre a mesma ?

Tipo sub50() ?

Ótima ideia!

Obrigado!

Olá Flávio!

Você saberia dizer como poderia montar uma função em MySql para verificar se o conteúdo passado é nulo?

Consegui com o SUBSTRING:
CREATE FUNCTION fn_Sub50 (v_String varchar(1000))
RETURNS varchar(50)
RETURN SUBSTRING(v_String, 1, 50);

Porém, não estou conseguindo fazer para NULL.

Obrigado!

Use a função IFNULL.

Olá Kleyber;

Neste caso o IFNULL é para MYSQL, ISNULL para SQL Server e NVL para Oracle.

Preciso criar uma função para cada banco para retornar se é NULO.

Abraços,

Marlon.

Marlon,

Use a variável sc_glo_tpbanco e passe-a como parâmetro, pois ela indica qual tipo de banco você tá usando. Assim tu podes direcionar se vais usar IFNULL, ISNULL, NVL, etc. Dà uma olhadinha no webhelp e olhe em váriaveis de database.

Obrigado Kleyber!

A única coisa que está me faltando é quando tem um campo tipo lookup.

em cada banco a função terá que ser diferente mesmo , só no sql do lookup que fica igual pois vc fez todas com o mesmo nome