Firebird array update problemi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Firebird array update problemi

Mesaj gönderen mege »

firebirdde dizi bir alanım var. bunda program içinde sorunsuz çalışıyorum. (dataset üzerinden). SP ile bi update öncesi bişey yapayım dedim. bi türlü SQL update edemedim.?

Kod: Tümünü seç

SELECT * FROM CHEMPARAMS WHERE UYUMLULUK[1] = 0
bu sorunsuz çalışıyorken

Kod: Tümünü seç

    UPDATE CHEMPARAMS
    SET CHEMPARAMS.UYUMLULUK[1]=0     <-- 6. satır bu
    WHERE CHEMPARAMS.CHEMNO = 2;
gibi bi updatede problem yaratıyor.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, char 29.

langrefe baktım dizilerle update yapamazsınız diye bişey yok, yaparsınız diyede bişey yok :?

problemim bumudur acep.? yoksa başka bi nanemi var farkedemediğim.

firebird 1.5 kullanıyorum
uyumluluk alanı smallint [1:33] array
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Hiç dizi kullanmadım ama UPDATE cümlesinde table name'leri kaldırsana (Alias Olarak Verdiğin CHEMPARAMS'ları

yani

Kod: Tümünü seç

    UPDATE CHEMPARAMS
    SET UYUMLULUK[1]=0 
    WHERE CHEMNO = 2
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

merhabalar. onlarsızda olmuyor :? zaten belki ondandır diye sonradan eklemiştim. kaldırıncada yine [ ] briketlerde hata veriyor.
ya anlamadım select yapıyoda nite update yapmıyo bu :(
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Belki de update için aynı tipte veri istiyor olabilir.

Yani UYUMLULUK[1:33] ya, Update ederken de

UYUMLULUK = [0,1,0,0,0...] gibi istiyor olabilir. Yani o tipte bir değişken ile update istiyor olabilir.

Google babaya bir danışsan?

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Dsql ile update ve insert ile dizi tiplerine düzeltme ve veri eklemeye izin verilmiyor. Aşağıdaki linkte api kullanmayı veya 3. parti bir component kullanmayı tavsiye etmiş. Ya da olmayan ingilizcem ile ben öyle anladım.

Bu gün bir dizi tanımlayıp kullanayım dedim. Anlayacağınız boşa kürek sallamışım. :lol:

http://sourceforge.net/mailarchive/foru ... um_id=6330
adresinde şöyle bir mesaj geçmiş.

Kod: Tümünü seç

>Category: Core Engine
 >Group: As Designed/Pitfall
 >Status: Deleted
 >Resolution: Rejected
 Priority: 5
 Submitted By: -- (pabloj)
 Assigned to: Nobody/Anonymous (nobody)
 Summary: Array datatype bug in isql Firebird 1.5.2 
 
 Initial Comment:
 Hi, I"m doing some experiments with array datatypes, to
 build a GIS like database, in Firebird 1.5.2 on Windows
 2000 server.
 I"ve successfully created an array domain and I"m able
 to insert data, but I"m not getting back the expected
 results.
 Here is the workflow:
 
 I created a domain:
 
 CREATE DOMAIN POINT FLOAT [1:2]
 
 and a table
 
 CREATE TABLE ZIP_CODES (STATE_FIPS_CODE CHAR(2),
 ZIP_CODE CHAR(5) NOT NULL, STATE_ABBREVIATION CHAR(2),
 ZIP_CODE_NAME VARCHAR(50), ZIP_LOC POINT,
 POPULATION_1990 INTEGER, ALLOCATION_FACTOR FLOAT,
 PRIMARY KEY (ZIP_CODE))
 
 Now I have troubles in using this table, this is what
 I"m doing:
 
 SQL> insert into zip_codes values ("wp", "12345", "wp",
 "pippo", "12:3", 123456,
  23.5);
 
 I"m trying to insert a POINT of coordinates x=12, y=3
 The insert seem to work but when I do a select I get
 back  "8b:0" which is not what I expected:
 
 From the command line with isql (firebird 1_5_2)
 
 SQL> select * from zip_codes;
 
 STATE_FIPS_CODE ZIP_CODE STATE_ABBREVIATION ZIP_CODE_NAME
                          ZIP_LOC POPULATION_1990
 ALLOCATION_FACTOR
 =============== ======== ==================
 ====================================
 ============== ================= ===============
 =================
 
 wp              12345    wp                 pippo
                             8b:0          123456      
   23.500000
 
 ----------------------------------------------------------------------
 
 >Comment By: Claudio Valderrama C. (robocop)
 Date: 2004-12-30 23:34
 
 Message:
 Logged In: YES 
 user_id=62823
 
 Inserting and updating arrays with literals is not supported
 in DSQL. You have to use the API. If you don"t want that,
 there are several third party connectivity packages that
 will isolate you from the API to work with arrays. Natively,
 you can only select individual elements of an array in DSQL:
 select zip_loc[1] from zip_codes;
 Your insertion caused crap to be injected into the array,
 not what you expected. It was a lack of enough validation in
 FB1.5 and FB1. In FB2 you get:
 SQL> insert into zip_codes values ("wp", "12345", "wp",
 CON> "pippo", "12:3", 123456,
 CON>  23.5);
 Statement failed, SQLCODE = -413
 conversion error from string "BLOB"
 
İyi çalışmalar.
Cevapla