Sql - скрипты
TQuery не обрабатывает 2 и более команд SQL
например :
select * from <table1>;
delete from <table2>;
когда команды стоят как у меня написано - есть вариант запихать все в ListBox и перебрать все в цикле.
А если это написано вот так :
select *
from <table1>;
delete from
<table2>;
... то я не знаю как быть.
Можно сделать несложный разбор и найти точку с запятой.
А если захочется написать еще комментарии ;)
Может есть компонент по этой теме ? Плиз, намекните.
Можно использовать тип TStringList - у него доступ к строчкам как у массива.
А вобще для выполнения различных запросов можно и несколько разных квери использовать - в каждый забить запрос с параметрами и , соответсвенно, их и менять.
Столкнулся с проблемой :
TQuery не обрабатывает 2 и более команд SQL
например :
select * from <table1>;
delete from <table2>;
когда команды стоят как у меня написано - есть вариант запихать все в ListBox и перебрать все в цикле.
А если это написано вот так :
select *
from <table1>;
delete from
<table2>;
... то я не знаю как быть.
Можно сделать несложный разбор и найти точку с запятой.
А если захочется написать еще комментарии ;)
Может есть компонент по этой теме ? Плиз, намекните.
И правильно что у тебя не получается.
Ты пытаешься выполнить два типа команд. Команду отображения данных и команду удаления.
В первом случае нужно использовать
Query->Open();
Во втором Query->ExecSQL();
Соединять команды разных типов нельзя.
Можно сколько угодно писать команд, кроме команды извлечения данных.
Кстати, если вы не вкурсе, то Query->SQL->... - это как раз таки TStringList;
Мы то в курсе:) Поэтому в переменной этого типа и можно хранить кучу запросов, а потом в цикле запихивать их по одному в квери. А уж там в зависимости селект это или нечто другое применять метод опен или экзекСкуль.
Столкнулся с проблемой :
TQuery не обрабатывает 2 и более команд SQL
например :
select * from <table1>;
delete from <table2>;
когда команды стоят как у меня написано - есть вариант запихать все в ListBox и перебрать все в цикле.
А если это написано вот так :
select *
from <table1>;
delete from
<table2>;
... то я не знаю как быть.
Можно сделать несложный разбор и найти точку с запятой.
А если захочется написать еще комментарии ;)
Может есть компонент по этой теме ? Плиз, намекните.
Эмюэ… А какая СУБД? Если, например, Oracle, то есть библиотеки ODAC и DOA, в которых есть соответствующие компоненты. Если не хочется пользоваться сторонними компонентами, то можно (в случае с Oracle) закинуть скрипт в текстоый файл и скормить SQL*Plus (это очень гибкая и мощная штука, несмотря на кажущуюся простоту). Думаю, аналогичные решения найдутся и для других СУБД.
Эмюэ… А какая СУБД? Если, например, Oracle, то есть библиотеки ODAC и DOA, в которых есть соответствующие компоненты. Если не хочется пользоваться сторонними компонентами, то можно (в случае с Oracle) закинуть скрипт в текстоый файл и скормить SQL*Plus (это очень гибкая и мощная штука, несмотря на кажущуюся простоту). Думаю, аналогичные решения найдутся и для других СУБД.
Нет, не Oracle, это FireBird, но суть понятна.
Я подумаю насчет этой темы.
Нет, не Oracle, это FireBird, но суть понятна.
Я подумаю насчет этой темы.
Для работы с FireBird более практично использовать компоненты FIBS - в них к стати реализованно то что необходимо тебе.