Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать SQL запрос возвращает результат или нет?


Страницы:   1 2

Kolan ©   (2007-11-13 16:42:00) 

Задравтсвуйте,
 Программ генерит скрипт(SQL). Его помещаю в TADOQuery. Нужно если он возвращает результат сделать Open и отобразить результат, если нет, сделать ExecSQL и вывести результат в мемо.

Как определить что нужно делать со скриптом?

Пример скрипта:

/*
Created by KSQLServerScriptCreator.
Creation date and time „13_11_2007 16-42-34“
Used data base „bsmp“
Used table „CONFIG“
*/

--Script for table „CONFIG“ start.--

DECLARE @CONFIGTempTable TABLE (ucod1 int, firma1 varchar(200), director1 varchar(200), cod_mp1 varchar(50), neobl_mp1 float(8), cod_bl1 varchar(50), bez_kop1 int, proc_tr1 float(8), proc_trinv1 float(8), proc_soc1 float(8), proc_medf1 float(8), proc_medm1 float(8), proc_penf1 float(8), SO_52561 float(8), NO_52561 float(8), SO_661 float(8), NO_661 float(8), SO_671 float(8), NO_671 float(8), GODZP1 int, MESZP1 int, STAVP1 float(8), S_LG31 float(8), S_LG51 float(8), S_LGOT1 float(8), GOD1 int, KOL_RS1 varchar(50), cod_pod1 varchar(50), cod_priz1 varchar(50), cod_otp1 varchar(50), STRANA1 int, KOD_R1 char(10), INN1 varchar(12), KPP1 varchar(9), MES_OTP1 int, MES_BOLN1 int, S_LGOTI1 float(8), cod_prem1 varchar(3), koef_51 float(8), koef_61 float(8), okato1 varchar(20), ISESN_VS1 int, MES_BOLNS1 int, MES_OTPS1 int, cod_dek1 varchar(50), cod_pos1 varchar(50), COD_SBER1 varchar(50), COD_ALIM1 varchar(30), COD_GOSST1 varchar(30), COD_SSUD1 varchar(30), reg_nom1 varchar(30), OKOPF1 varchar(30), OKOGU1 varchar(30), IFNS1 int, podp_dir1 varchar(100), podp_glb1 varchar(100), cod_otpf1 varchar(100), bl_soc1 varchar(100));

INSERT INTO @CONFIGTempTable(ucod1, firma1, director1, cod_mp1, neobl_mp1, cod_bl1, bez_kop1, proc_tr1, proc_trinv1, proc_soc1, proc_medf1, proc_medm1, proc_penf1, SO_52561, NO_52561, SO_661, NO_661, SO_671, NO_671, GODZP1, MESZP1, STAVP1, S_LG31, S_LG51, S_LGOT1, GOD1, KOL_RS1, cod_pod1, cod_priz1, cod_otp1, STRANA1, KOD_R1, INN1, KPP1, MES_OTP1, MES_BOLN1, S_LGOTI1, cod_prem1, koef_51, koef_61, okato1, ISESN_VS1, MES_BOLNS1, MES_OTPS1, cod_dek1, cod_pos1, COD_SBER1, COD_ALIM1, COD_GOSST1, COD_SSUD1, reg_nom1, OKOPF1, OKOGU1, IFNS1, podp_dir1, podp_glb1, cod_otpf1, bl_soc1)
 VALUES(1, 'IOC AANII a.AOEIAI', 'Ae. a?a?                                                                                     Aeooiaa Aaeaioeia Iao?iaia', '''078''', 3000, '''029''', 0, 0.2, 0.12, 3.2, 0.8, 2, 6, 14, 0, 14, 0, 10, 4, 2005, 8, 13, 500, 3000, 400, 2004, NULL, '''068''', '''069''', NULL, 643, '61        ', '6144000193', '614401001', 8, 14, 600, NULL, 1.4, 1.2, '60415000000', 0, 12, 3, '''034''', '''073'',''074'',''075''', '''100''', '''083''', '''100''', '''098''', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);

SET IDENTITY_INSERT CONFIG ON;

UPDATE CONFIG
 SET firma = T.firma1, director = T.director1, cod_mp = T.cod_mp1, neobl_mp = T.neobl_mp1, cod_bl = T.cod_bl1, bez_kop = T.bez_kop1, proc_tr = T.proc_tr1, proc_trinv = T.proc_trinv1, proc_soc = T.proc_soc1, proc_medf = T.proc_medf1, proc_medm = T.proc_medm1, proc_penf = T.proc_penf1, SO_5256 = T.SO_52561, NO_5256 = T.NO_52561, SO_66 = T.SO_661, NO_66 = T.NO_661, SO_67 = T.SO_671, NO_67 = T.NO_671, GODZP = T.GODZP1, MESZP = T.MESZP1, STAVP = T.STAVP1, S_LG3 = T.S_LG31, S_LG5 = T.S_LG51, S_LGOT = T.S_LGOT1, GOD = T.GOD1, KOL_RS = T.KOL_RS1, cod_pod = T.cod_pod1, cod_priz = T.cod_priz1, cod_otp = T.cod_otp1, STRANA = T.STRANA1, KOD_R = T.KOD_R1, INN = T.INN1, KPP = T.KPP1, MES_OTP = T.MES_OTP1, MES_BOLN = T.MES_BOLN1, S_LGOTI = T.S_LGOTI1, cod_prem = T.cod_prem1, koef_5 = T.koef_51, koef_6 = T.koef_61, okato = T.okato1, ISESN_VS = T.ISESN_VS1, MES_BOLNS = T.MES_BOLNS1, MES_OTPS = T.MES_OTPS1, cod_dek = T.cod_dek1, cod_pos = T.cod_pos1, COD_SBER = T.COD_SBER1, COD_ALIM = T.COD_ALIM1, COD_GOSST = T.COD_GOSST1, COD_SSUD = T.COD_SSUD1, reg_nom = T.reg_nom1, OKOPF = T.OKOPF1, OKOGU = T.OKOGU1, IFNS = T.IFNS1, podp_dir = T.podp_dir1, podp_glb = T.podp_glb1, cod_otpf = T.cod_otpf1, bl_soc = T.bl_soc1
 FROM @CONFIGTempTable AS T
 WHERE (ucod = T.ucod1);

INSERT INTO CONFIG(ucod, firma, director, cod_mp, neobl_mp, cod_bl, bez_kop, proc_tr, proc_trinv, proc_soc, proc_medf, proc_medm, proc_penf, SO_5256, NO_5256, SO_66, NO_66, SO_67, NO_67, GODZP, MESZP, STAVP, S_LG3, S_LG5, S_LGOT, GOD, KOL_RS, cod_pod, cod_priz, cod_otp, STRANA, KOD_R, INN, KPP, MES_OTP, MES_BOLN, S_LGOTI, cod_prem, koef_5, koef_6, okato, ISESN_VS, MES_BOLNS, MES_OTPS, cod_dek, cod_pos, COD_SBER, COD_ALIM, COD_GOSST, COD_SSUD, reg_nom, OKOPF, OKOGU, IFNS, podp_dir, podp_glb, cod_otpf, bl_soc)
 SELECT ucod1, firma1, director1, cod_mp1, neobl_mp1, cod_bl1, bez_kop1, proc_tr1, proc_trinv1, proc_soc1, proc_medf1, proc_medm1, proc_penf1, SO_52561, NO_52561, SO_661, NO_661, SO_671, NO_671, GODZP1, MESZP1, STAVP1, S_LG31, S_LG51, S_LGOT1, GOD1, KOL_RS1, cod_pod1, cod_priz1, cod_otp1, STRANA1, KOD_R1, INN1, KPP1, MES_OTP1, MES_BOLN1, S_LGOTI1, cod_prem1, koef_51, koef_61, okato1, ISESN_VS1, MES_BOLNS1, MES_OTPS1, cod_dek1, cod_pos1, COD_SBER1, COD_ALIM1, COD_GOSST1, COD_SSUD1, reg_nom1, OKOPF1, OKOGU1, IFNS1, podp_dir1, podp_glb1, cod_otpf1, bl_soc1 FROM @CONFIGTempTable AS T
 WHERE NOT EXISTS(SELECT * FROM CONFIG WHERE (ucod = T.ucod1))

SET IDENTITY_INSERT CONFIG OFF;
DBCC CHECKIDENT(CONFIG, RESEED);

--Script for table „CONFIG“ end.--

/*
Regards to KSoftWare®.
*/


sniknik   (2007-11-14 12:41:00) [21]

а в целом(в общем) ни один вопрос смысла не имеет... всегда только частности.


Ega23   (2007-11-14 12:36:00) [22]


> ничего интересного, стандартная проверка статуса у каждого
> рекордсета из возвращаемого списка.


Это если ADO.
А в целом?


sniknik   (2007-11-14 12:15:00) [23]

ничего интересного, стандартная проверка статуса у каждого рекордсета из возвращаемого списка.


Ega23   (2007-11-14 12:08:00) [24]

хм.. А вообще интересная задачка-то... Ну чисто академически...


Kolan   (2007-11-14 12:04:00) [25]

> TADOCommad

О, попробую.


ЮЮ   (2007-11-14 03:16:00) [26]

> Вот если в том же SQL Query Analyzer запустить SELECT, то
> он покажет данные, если INSERT, то строчку Rows affected…


Даже если запустить SELECT, то на закладке Massage можешь найти строчку Rows affected…


> Нужно если он возвращает результат сделать Open и отобразить
> результат, если нет, сделать ExecSQL и вывести результат
> в мемо.

Узнать можно после, никак не до. Поэтому следует использовать не TADOQuery, имеющего разные методы а, например TADOCommad, имеющий только Execute, который, к тому же, возвращает _Recordset, из которого можно вытащить и возвращаемые наборы данных и строчки Rows affected…


Desdechado   (2007-11-13 19:46:00) [27]

> SQL Query Analyzer запустить SELECT, то он покажет данные,
>  если INSERT, то строчку Rows affected
А если скрипт с обеими командами?


Anatoly Podgoretsky   (2007-11-13 19:19:00) [28]

> Kolan  (13.11.2007 16:42:00)  [0]

Данный запрос результата (набора данных) не возвращает.


Kolan   (2007-11-13 19:09:00) [29]

Зря я скрипт привел. На самом деле может быть люьой запрос.


Kolan   (2007-11-13 18:17:00) [30]

> Набор данных — результат?

Да :).

Вот если в том же SQL Query Analyzer запустить SELECT, то он покажет данные, если INSERT, то строчку Rows affected…


Desdechado   (2007-11-13 17:37:00) [31]

Код ошибки - это результат?
Скалярное значение из функции - результат?
Набор данных - результат?
ИМХО, невозможно определить в общем случае, будет ли возвращен датасет или нет. Тем более, из скрипта, а не команды.


Johnmen   (2007-11-13 16:51:00) [32]

Что значит "скрипт возвращает результат"?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо