Главная страница
    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-1105445771
tolstiak
2005-01-11 15:16
2005.01.23
Как сделать RadioGroup многострочным?


3-1103282169
}|{yk
2004-12-17 14:16
2005.01.23
Что может означать данная ошибка?


3-1103267528
cad2206
2004-12-17 10:12
2005.01.23
Переход к записи по щелчку мыши в DBGrid e


1-1105584773
Antonn
2005-01-13 05:52
2005.01.23
Узнать ардес из интернет-ярлыка(*.url)


3-1103503786
rosl
2004-12-20 03:49
2005.01.23
кодировка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский