Tabela com Campo Array

Firebird

24/10/2003

CREATE TABLE ´TABARRAY´
(
´CODIGO´INTEGER NOT NULL,
´NOME´VARCHAR(20),
´LINGUA´VARCHAR(15)[1:5] ,
PRIMARY KEY (´CODIGO´)
);

acima esta minha tabela de testes...

como faço p/ inserir dados nela via insert?

tentei
insert into tabaray (codigo,nome,lingua[1]) values (1,´nome´,´portugues´)

+ ele da erro


Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 39 [ Statement: insert into tabaray (codigo,nome,lingua[0]) values (1,´nome´,´portugues´)


como faço p/ inserir dados e depois recuperar?

alguém tem algum exemplo?

grato


Rfpsatin

Rfpsatin

Curtidas 0

Respostas

Afarias

Afarias

24/10/2003

Não use arrays com Interbase (ou Firebird) -- Os arrays praticamente não podem ser utilizados via SQL.


T+


GOSTEI 0
Rfpsatin

Rfpsatin

24/10/2003

Não sei se entendi errado + parece q só com stored procedure então...

blz, vou deixar p/ lá já q não da p/ trabalhar via sql

abraço


GOSTEI 0
Afarias

Afarias

24/10/2003

|Não sei se entendi errado + parece q só com stored procedure então...

Não, nem em Stored Procedures -- só via API


|blz, vou deixar p/ lá já q não da p/ trabalhar via sql

Sábia decisão. :wink:


T+


GOSTEI 0
Rfpsatin

Rfpsatin

24/10/2003

Salve Colega, acho q da sim, da uma olhada neste exemplo do employee.gdb q vem na instalação do IB

COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;

/* Stored procedures */

CREATE PROCEDURE SHOW_LANGS 
(
  CODE VARCHAR(5),
  GRADE SMALLINT,
  CTY VARCHAR(15)
)
RETURNS
(
  LANGUAGES VARCHAR(15)
)
AS
BEGIN EXIT; END ^


ALTER PROCEDURE SHOW_LANGS 
(
  CODE VARCHAR(5),
  GRADE SMALLINT,
  CTY VARCHAR(15)
)
RETURNS
(
  LANGUAGES VARCHAR(15)
)
AS
DECLARE VARIABLE i INTEGER;
BEGIN
  i = 1;
  WHILE (i <= 5) DO
  BEGIN
    SELECT language_req[:i] FROM joB
    WHERE ((job_code = :code) AND (job_grade = :grade) AND (job_country = :cty)
           AND (language_req IS NOT NULL))
    INTO :languages;
    IF (languages = ´ ´) THEN  /* Prints ´NULL´ instead of blanks */
       languages = ´NULL´;         
    i = i +1;
    SUSPEND;
  END
END
 ^

SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;



GOSTEI 0
Afarias

Afarias

24/10/2003

Como eu disse:: ´Os arrays praticamente não podem ser utilizados via SQL.´ -- note o *praticamente* ...

Realmente, é possível SELECIONAR ... mas, para por ai! não é possível inserir ou atualizar. Para isso vc tem q usar API.

Alguns componentes (IBO e FIB por exemplo) implementam o uso de ARRAYS usando a API do IB.


T+


GOSTEI 0
POSTAR