ADOCommand i tworzenie proc. składowanej

0

Cześć, mam skrypt, w którym jest na początku tworzenie tabel, a potem tworzenie procedury składowanej(posługuję się zmiennymi w formacie mssql, czyli: @zmienna).

Dopóki nie było w skrypcie części tworzącej procedurę, to wszystko grało. Gdy umieściłem tą część, dostaję błąd:
"Niepoprawnie zdefiniowany obiekt Parameter. Podano niespójne lub niepełne informacje".

Pomyślałem, że ADOCommand traktuje zmienne sql jako swój parametr, więc dałem przed Execute, ParamCheck na false, ale to też nic nie pomogło.

Co mam zrobić?

PS. Cały skrypt bez problemu chodzi w MSSQL, tylko problem z tym ADOCommand jest.
Chciałbym uniknąć rozdzielania skryptu na dwa pliki.

0

Czesc.

Ja tam zwyklem uzywac zwyklego TADOQuery do odpalania skryptow i nie mialem z tego co pamietam problemow z procedurami skladowanymi. Jakbys podal ten swoj skrypt, lub zmodyfikowal go do najprostszej postaci zwracajacej blad to mozna by cos wiecej powiedziec.
Parametry do obiektow ADO w Delphi poprzedzasz znakiem ':' wiec to nie o '@' chodzi...

0

Chociaż ostatni post na tej liście pochodzi z 2008 roku postanowiłem podzielić się z kolegami swoimi doświadczeniami
Ja tez otrzymałem komunikat "Niepoprawnie zdefiniowany obiekt Parameter. Podano niespójne lub niepełne informacje".
na programie skompilowanym pod DELPHI uruchomionym w środowisku Windows 7 64 bit polskim z użyciem
MYSQL v 5.5 . Na Win XP (virtualnym) 32 bitowym i MYSQL 5.1 program działał poprawnie .
W programie też używałem komponentu ADOCommand i przy pomocy
Parameters przekazywałem dane rekordów do tablicy bazy danych .
Po licznych poszukiwaniach rozwiązania problemu (na WIN7 64 bit nie mialem do dyspozycji kompilatora i IDE)
doszedłem do następujących wniosków końcowych :

  1. MYSQL 5.5 w wersji 32 bit ale działający w środowisku 64 bit polskim , pewne zmienne nie pobiera poprawnie .
    np brak mu zmiennej enviroment SYSTEM_TIME_ZONE . Na programy które stosują komponent
    ADOCommand i Parameters narzuca o wiele ostrzejsze warunki niż MYSQL v 5.1 .
    Z mojego rozpoznania zalecam :
    1. Lista parametrów i danych musi być kompletna - tzn - nie można podać tylko niektóre pola i dane - dziwne
    ale u mnie dopiero wtedy program zadziałał poprawnie w W7/64 bit MYSQL 5.5 .
    Na MYSQL 5.1 i WinXP ten warunek nie obowiązywał .
    2.Jeśli już zdeklarowaliśmy pole to musimy podać dla tego pola wartość - chociażby Null
    3. Szczególną uwagę należy zwrócić na pola które które mają status auto_increment jak np ID_Towaru. Te pola nie mogą być
    w ogóle podawane w Parameters . Nie można np zdefiniować np . tego pola a potem nie przypisywać mu żadnej wartości .
    Wystąpi wtedy opisywany komunikat . W MYSQL 5.1 można było dokonać takiego manewru
    4 . Przy definiowaniu wartości poprzez Parameters powinniśmy podawać zarówno numer parametru , typ, jego nazwę i dopiero
    wtedy odwoływać się poprzez nazwę .
    ADOCommand.Parameters[1].DataType:=ftInteger;
    ADOCommand.Parameters[1].Name:= 'AGE';
    ADOCommand.Parameters.ParamByName('AGE').Value:=rekord.AGE;
    W MYSQL 5.1 można było nie podawać ADOCommand.Parameters[1].Name:= 'AGE'; i program działał

  2. Dla aplikacji napisanej z użyciem komponentów 32 bitowych dla DELPHI
    nie można stosować MYSQL np. 5.5 w wersji 64 bitowej . Ponieważ cała architektura programu została napisana
    z użyciem elementów 32 bitowych to także MY SQL musi byc 32 bitowy - chociaz nasz WIN 7 ma możliwość pracy
    z użyciem 64 bit

                        Życzę wszystkim powodzenia na Win 7 64 bit 
                                                 jsmietan
    

1 użytkowników online, w tym zalogowanych: 0, gości: 1