Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при использовании SQLConnection в Oracle   Найти похожие ветки 

 
Mefodiy   (2004-12-21 09:23) [0]

Хочу создать таблицу и заполнить строку в RunTime. Код представлен ниже:
     var sql_str: string;
         MyParams: TParams;
     ..................
     sql_str := "CREATE TABLE MyTable ("+
                "F1 VARCHAR2(8)  NOT NULL PRIMARY KEY,"+
                "F2 VARCHAR2(35) NOT NULL,"+
                "F3 NUMBER(12,2))";
     SQLConnection1.Execute(sql_str,Nil);
     MyParams := TParams.Create;
     MyParams.Clear;
     MyParams.CreateParam(ftString,  "pF1", ptInput);
     MyParams.CreateParam(ftString,  "pF2", ptInput);
     MyParams.CreateParam(ftCurrency,"pF3", ptInput);
     MyParams.ParamByName("pF1").AsString   := "00000001";
     MyParams.ParamByName("pF2").AsString   := "Test string";
     MyParams.ParamByName("pF3").AsCurrency := 250000.00;
     sql_str := "INSERT INTO MyTable (F1,F2,F3) VALUES (:pF1,:pF2,:pF3)";
     SQLConnection1.Execute(sql_str,MyParams);
     SQLConnection1.Execute("COMMIT",Nil);
     MyParams.Free;
При выполнении строки
     SQLConnection1.Execute(sql_str,MyParams);
вылетает ошибка:
"ORA-01036 Illegal variable name/number"
причем проблема в поле F3, потому что если его исключить то все работает нормально. Пробовал менять AsCurrency на AsFloat - опять выдает ту же ошибку.
Буду признателен за помощь.


 
Johnmen ©   (2004-12-21 09:28) [1]

Пробуй ftBCD.


 
Mefodiy   (2004-12-21 10:19) [2]

Не помогло !


 
Sergey13 ©   (2004-12-21 10:29) [3]

А если создавать поле просто
"F3 NUMBER)";

Кстати, а зчем вообще создавать таблицу в рантайме?


 
Johnmen ©   (2004-12-21 10:32) [4]

Тогда не знаю...

PS И почему ПК типа varchar ???


 
Mefodiy   (2004-12-21 10:53) [5]

Сделал F3 NUMBER и заменил строки
  MyParams.CreateParam(ftInteger,"pF3", ptInput)
  .........
  MyParams.ParamByName("pF3").AsInteger := 250000;
Та же ошибка.

>>Кстати, а зчем вообще создавать таблицу в рантайме?
Ошибка выдается не при создании таблицы, а при ее заполнении.

>>PS И почему ПК типа varchar ???
вопрос не понятен. Что такое ПК ?


 
Reindeer Moss Eater ©   (2004-12-21 11:00) [6]

Не используй SQLConnection1 и CreateParam.
Используй компоненты, предназначенные для запросов.


 
Sergey13 ©   (2004-12-21 11:05) [7]

2[5] Mefodiy   (21.12.04 10:53)
А со старыми типами параметров?

>Ошибка выдается не при создании таблицы, а при ее заполнении.
Да я понял. Я спрашивал о целесообразности создания. Кстати, а в "старую" таблицу (ранее уже созданную) сработает вставка?

>Что такое ПК ?
PRIMARY KEY

ЗЫ:Такая ошибка вроде появляется (не уверен, нет доки под рукой) если число или наименование параметров неправильное. Может ошибка в способе вызова? Я с этими компонентами не работал.


 
roottim ©   (2004-12-21 14:01) [8]

Executes an SQL command on the server.

Delphi syntax:

function Execute(const SQL: string; Params: TParams; ResultSet:Pointer=nil): Integer;

C++ syntax:

int __fastcall Execute(const AnsiString SQL, TParams Params, void *ResultSet = NULL);

Description

Call Execute to execute a single command on the server without the overhead of using an SQL dataset. Execute is especially useful for statements that do not return a result set such as data definition language (DDL) statements.

SQL is the command to execute.

Params is a TParams object that contains any parameters used by the SQL statement. Parameter binding is by index only (not by name), so the order of parameters is important and the order of the TParam objects in Params corresponds to the order of the parameters in the SQL statement. Use properties and methods of TParams to create a TParams object, add TParam objects for each parameter, and assign parameter properties such as datatype and value. If the SQL statement does not include any parameters, pass a nil (Delphi) or NULL (C++) value for Params.


 
roottim ©   (2004-12-21 14:06) [9]

хотя не то наверно...
может он не отделят параметр в парсере
а если заменить ???
sql_str := "INSERT INTO MyTable (F1,F2,F3) VALUES (:pF1,:pF2,:pF3)";
на

sql_str := "INSERT INTO MyTable (F1,F2,F3) VALUES (:pF1 , :pF2 , :pF3 )";


 
Mefodiy   (2004-12-22 07:59) [10]

Та же ошибка выдается и при самом простом варианте(с одним полем F3):
    var sql_str: string;
        MyParams: TParams;
    ..................
    sql_str := "CREATE TABLE MyTable (F3 NUMBER)";
    SQLConnection1.Execute(sql_str,Nil);
    MyParams := TParams.Create;
    MyParams.Clear;
    MyParams.CreateParam(ftInteger,"pF3", ptInput);
    MyParams.ParamByName("pF3").AsInteger := 250000;
    sql_str := "INSERT INTO MyTable (F3) VALUES (:pF3)";
    SQLConnection1.Execute(sql_str,MyParams);
    SQLConnection1.Execute("COMMIT",Nil);
    MyParams.Free;


 
Sergey13 ©   (2004-12-22 10:01) [11]

2[10] Mefodiy   (22.12.04 07:59)
А почему бы не попробовать [6] Reindeer Moss Eater ©   (21.12.04 11:00)?
На закладке ведь есть и SQLQuery.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.037 c
1-1105345131
HF-Trade
2005-01-10 11:18
2005.01.23
У TMainMenu можно изменить высоту?


1-1105448024
Леха
2005-01-11 15:53
2005.01.23
Как создать класс с ссылками на классы другие


3-1103359735
Dell3r
2004-12-18 11:48
2005.01.23
Печать


1-1105590321
ashnurov
2005-01-13 07:25
2005.01.23
Поиск файла


1-1105430239
Раптон
2005-01-11 10:57
2005.01.23
Как вывести поверх картинки TLabel?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский