Добрый день, помогите пожалуйста, хранимая процедура сбрасывает ошибку
Ошибки генерации отчета (FirebirdSql.Data.FirebirdClient.FbException (0x80004005): arithmetic exception, numeric overflow, or string truncation
No message for error code 335544914 found.
At procedure 'LICENSES_ERRORS' line: 54, col: 17
до того как выкатил на боевую все работало, беда в том что запрос с выборкой отдельно выполняется на ура, а вот в внутри хранимой процедуры совсем не хочет...
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380.
create or alter procedure LICENSES_ERRORS (
NUSER varchar(50),
NYEAR varchar(50),
NMOUNTH varchar(50))
returns (
ERRORINFO varchar(1000),
FIELDINFO varchar(255))
as
declare variable SYS_GUID varchar(50);
declare variable RBD_SCHOOLFK varchar(50);
declare variable IPFK varchar(50);
declare variable ORGNAME varchar(1024);
declare variable SCHOOLNAME varchar(1000);
declare variable SHORTNAME varchar(250);
declare variable SCHOOLPROPERTYNAME varchar(255);
declare variable SCHOOL_SUBTYPENAME varchar(255);
declare variable BRANCH integer;
declare variable ADDRESS varchar(255);
declare variable MANAGERFIO varchar(255);
declare variable CHARGEPOSITION varchar(255);
declare variable KPP varchar(40);
declare variable GOSREGNUM varchar(50);
declare variable INN varchar(50);
declare variable IP_LASTNAME varchar(255);
declare variable IP_FIRSTNAME varchar(255);
declare variable IP_MIDDLENAME varchar(255);
declare variable IP_GOSREGNUM varchar(50);
declare variable IP_INN varchar(50);
declare variable LICENSE_REG_NUM varchar(30);
declare variable NUMDOC varchar(30);
declare variable SERDOC varchar(30);
declare variable DATA_END date;
declare variable LICENSE_STATUSESFK varchar(50);
declare variable BASISTYPEDOCFK varchar(100);
declare variable NUMLICDOC varchar(64);
declare variable DATELICDOC date;
declare variable REG_DATE date;
declare variable BASISTYPEDOCFK_DUBL varchar(100);
declare variable NUMLICDOC_DUBL varchar(64);
declare variable DATELICDOC_DUBL date;
declare variable DUBL integer;
declare variable CHECK_REASONS_DATES blob sub_type 0 segment size 80;
declare variable LICENSE_REG_NUM_OLD varchar(64);
declare variable DATELICDOC_OLD date;
declare variable BASISTYPEDOCFK_NEW varchar(100);
declare variable NUMLICDOC_NEW varchar(64);
declare variable DATELICDOC_NEW date;
declare variable LDS_ID varchar(50);
declare variable LIC_NEW_LICENSEOLDFK varchar(100);
declare variable PAKET_DATE_TIME timestamp;
BEGIN
PAKET_DATE_TIME = current_timestamp;
FOR SELECT
LIC.SYS_GUID,
LIC.RBD_SCHOOLFK,
LIC.IPFK,
LIC.ORGNAME,
LIC.SCHOOLNAME,
LIC.SHORTNAME,
LIC.SCHOOLPROPERTYNAME,
SCS.SCHOOL_SUBTYPENAME,
RSC.BRANCH,
LIC.ADDRESS,
LIC.MANAGERFIO,
LIC.CHARGEPOSITION,
LIC.KPP,
LIC.GOSREGNUM,
LIC.INN,
LIC.IP_LASTNAME,
LIC.IP_FIRSTNAME,
LIC.IP_MIDDLENAME,
LIC.IP_GOSREGNUM,
LIC.IP_INN,
LIC.LICENSE_REG_NUM,
LIC.NUMDOC,
LIC.SERDOC,
LIC.DATA_END,
LS.NAME,
case when LIC."DOUBLE" = 0 then BTD.NAME
when (LIC."DOUBLE" = 1 and FS_ORIG.ID=2) then BTD_ORIG.NAME end,
case when LIC."DOUBLE" = 0 then LIC.NUMLICDOC
when (LIC."DOUBLE" = 1 and FS_ORIG.ID=2) then LIC_ORIG.NUMLICDOC end,
case when LIC."DOUBLE" = 0 then LIC.DATELICDOC
when (LIC."DOUBLE" = 1 and FS_ORIG.ID=2) then LIC_ORIG.DATELICDOC end,
LIC.REG_DATE,
case when LIC."DOUBLE" = 1 then BTD.NAME end,
case when LIC."DOUBLE" = 1 then LIC.NUMLICDOC end,
case when LIC."DOUBLE" = 1 then LIC.DATELICDOC end,
LIC."DOUBLE",
LIC.CHECK_REASONS_DATES,
case when FS_OLD.ID=2 then LIC_OLD.LICENSE_REG_NUM end,
case when FS_OLD.ID=2 then LIC_OLD.DATELICDOC end,
case when LDS.ID=6 then BTD_LD.NAME
when FS_NEW.ID=2 then BTD_NEW.NAME end,
case when LDS.ID=6 then LD.NUMDOC
when FS_NEW.ID=2 then LIC_NEW.NUMLICDOC end,
case when LDS.ID=6 then LD.DATEDOC
when FS_NEW.ID=2 then LIC_NEW.DATELICDOC end,
LDS.ID,
LIC_NEW.LICENSEOLDFK
from LICENSES LIC
left join FBDRL_STATUS as FS on LIC.FBDRL_STATUSFK = FS.SYS_GUID and (FS.SYS_STATE is NULL OR FS.SYS_STATE not in ('1','3'))
left join LICENSE_STATUSES as LS on LS.SYS_GUID = LIC.LICENSE_STATUSESFK and (LS.SYS_STATE is NULL OR LS.SYS_STATE not in ('1','3'))
left join BASIS_TYPE_DOC as BTD on BTD.SYS_GUID = LIC.BASISTYPEDOCFK and (BTD.SYS_STATE is NULL OR BTD.SYS_STATE not in ('1','3'))
left join RBD_SCHOOLS as RSC on RSC.SYS_GUID = LIC.RBD_SCHOOLFK and (RSC.SYS_STATE is NULL OR RSC.SYS_STATE not in ('1','3'))
left join SCHOOL_SUBTYPES as SCS on SCS.SYS_GUID = RSC.SCHOOLTYPEFK and (SCS.SYS_STATE is NULL OR SCS.SYS_STATE not in ('1','3'))
left join LICENSES as LIC_ORIG on (LIC.LICENSE_ORIGINALFK = LIC_ORIG.SYS_GUID and (LIC_ORIG.SYS_STATE is NULL OR LIC_ORIG.SYS_STATE not in ('1','3')))
left join FBDRL_STATUS as FS_ORIG on LIC_ORIG.FBDRL_STATUSFK = FS_ORIG.SYS_GUID and (FS_ORIG.SYS_STATE is NULL OR FS_ORIG.SYS_STATE not in ('1','3'))
left join BASIS_TYPE_DOC as BTD_ORIG on LIC_ORIG.BASISTYPEDOCFK=BTD_ORIG.SYS_GUID and (BTD_ORIG.SYS_STATE is NULL OR BTD_ORIG.SYS_STATE not in ('1','3'))
left join LICENSE_DEC as LD on (LIC.SYS_GUID=LD.LICENSEFK and (LD.SYS_STATE is NULL OR LD.SYS_STATE not in ('1','3')) and
((LD.datedoc = (select MAX(LICENSE_DEC.DATEDOC) from LICENSE_DEC
where LICENSE_DEC.licensefk=LIC.Sys_guid)) or (LD.datedoc is null)))
left join LICENSE_DEC_SUBTYPES LDS on (LD.LICENDECSUBTYPEFK = LDS.SYS_GUID and LDS.ID=6 and (LDS.SYS_STATE is NULL OR LDS.SYS_STATE not in ('1','3')))
left join BASIS_TYPE_DOC as BTD_LD on BTD_LD.SYS_GUID = LD.BASISTYPEDOCFK and (BTD_LD.SYS_STATE is NULL OR BTD_LD.SYS_STATE not in ('1','3'))
left join LICENSES as LIC_OLD on (LIC.LICENSEOLDFK = LIC_OLD.SYS_GUID and (LIC_OLD.SYS_STATE is NULL OR LIC_OLD.SYS_STATE not in ('1','3')))
left join FBDRL_STATUS as FS_OLD on LIC_OLD.FBDRL_STATUSFK = FS_OLD.SYS_GUID and (FS_OLD.SYS_STATE is NULL OR FS_OLD.SYS_STATE not in ('1','3'))
left join LICENSES as LIC_NEW on (LIC_NEW.LICENSEOLDFK = LIC.SYS_GUID and (LIC_NEW.SYS_STATE is NULL OR LIC_NEW.SYS_STATE not in ('1','3')))
left join FBDRL_STATUS as FS_NEW on LIC_NEW.FBDRL_STATUSFK = FS_NEW.SYS_GUID and (FS_NEW.SYS_STATE is NULL OR FS_NEW.SYS_STATE not in ('1','3'))
left join BASIS_TYPE_DOC as BTD_NEW on BTD_NEW.SYS_GUID = LIC_NEW.BASISTYPEDOCFK and (BTD_NEW.SYS_STATE is NULL OR BTD_NEW.SYS_STATE not in ('1','3'))
where
(LIC.SYS_STATE is NULL OR LIC.SYS_STATE not in ('1','3')) and
(FS.ID=2) and
(CAST(:nYear as varchar(4)) is NULL or EXTRACT (YEAR from LIC.DATELICDOC) = CAST(:nYear as varchar(4)))
and
(CAST(:nMounth as varchar(2)) is NULL or EXTRACT (MONTH from LIC.DATELICDOC) = cast(:nMounth as varchar(2)))
and
LIC.RBDC_REGIONSFK = (select EMPLOYEES.RBDC_REGIONSFK from EMPLOYEES
left join SYS_USERS as SU on EMPLOYEES.USERFK = SU.SYS_GUID
where SU.LOGIN = :nUser)
INTO :SYS_GUID,
:RBD_SCHOOLFK,
:IPFK,
:ORGNAME,
:SCHOOLNAME,
:SHORTNAME,
:SCHOOLPROPERTYNAME,
:SCHOOL_SUBTYPENAME,
:BRANCH,
:ADDRESS,
:MANAGERFIO,
:CHARGEPOSITION,
:KPP,
:GOSREGNUM,
:INN,
:IP_LASTNAME,
:IP_FIRSTNAME,
:IP_MIDDLENAME,
:IP_GOSREGNUM,
:IP_INN,
:LICENSE_REG_NUM,
:NUMDOC,
:SERDOC,
:DATA_END,
:LICENSE_STATUSESFK,
:BASISTYPEDOCFK,
:NUMLICDOC,
:DATELICDOC,
:REG_DATE,
:BASISTYPEDOCFK_DUBL,
:NUMLICDOC_DUBL,
:DATELICDOC_DUBL,
:DUBL,
:CHECK_REASONS_DATES,
:LICENSE_REG_NUM_OLD,
:DATELICDOC_OLD,
:BASISTYPEDOCFK_NEW,
:NUMLICDOC_NEW,
:DATELICDOC_NEW,
:LDS_ID,
:LIC_NEW_LICENSEOLDFK
do
BEGIN
FIELDINFO = ('Лицензия № ' || COALESCE(:LICENSE_REG_NUM,'') || ' ' || ' от ' || COALESCE(:DATELICDOC,'') || '; Идентификатор лицензии:' || COALESCE(:SYS_GUID,''));
-- {4.1.1.
if (:SYS_GUID is null) then
begin
ERRORINFO = 'Не заполнено поле "Уникальный код источника"';
suspend;
end
if ((:RBD_SCHOOLFK is not null and :IPFK is not null) or (:RBD_SCHOOLFK is null and :IPFK is null)) then
begin
ERRORINFO = 'Не заполнено одно из полей: "Идентификатор юридического лица в ТРС" или "Идентификатор индивидуального предпринимателя в ТРС"';
suspend;
end
if (:ORGNAME is null) then
begin
ERRORINFO = 'Не заполнено поле "Наименование лицензирующего органа"';
suspend;
end
if ((:SCHOOLNAME is not null and :RBD_SCHOOLFK is null) or (:SCHOOLNAME is null and :RBD_SCHOOLFK is not null)) then
begin
ERRORINFO = 'Не заполнено поле "Полное наименование юридического лица"';
suspend;
end
if ((:SCHOOLPROPERTYNAME is not null and :RBD_SCHOOLFK is null) or (:SCHOOLPROPERTYNAME is null and :RBD_SCHOOLFK is not null)) then
begin
ERRORINFO = 'Не заполнено поле "Организационно-правовая форма юридического лица"';
suspend;
end
if ((:SCHOOL_SUBTYPENAME is not null and :RBD_SCHOOLFK is null) or (:SCHOOL_SUBTYPENAME is null and :RBD_SCHOOLFK is not null)) then
begin
ERRORINFO = 'Не заполнено поле "Тип образовательного учреждения"';
suspend;
end
if ((:ADDRESS is not null and :RBD_SCHOOLFK is null) or (:ADDRESS is null and :RBD_SCHOOLFK is not null)) then
begin
ERRORINFO = 'Не заполнено поле "Адрес места нахождения юридического лица"';
suspend;
end
if ((:RBD_SCHOOLFK is null and :KPP is not null) or (:RBD_SCHOOLFK is not null and :KPP is null)) then
begin
ERRORINFO = 'Не заполнено поле "КПП"';
suspend;
end
if ((:RBD_SCHOOLFK is null and :GOSREGNUM is not null) or (:RBD_SCHOOLFK is not null and :GOSREGNUM is null)) then
begin
ERRORINFO = 'Не заполнено поле "Государственный регистрационный номер записи о создании юридического лица"';
suspend;
end
if ((:RBD_SCHOOLFK is null and :INN is not null) or (:RBD_SCHOOLFK is not null and :INN is null)) then
begin
ERRORINFO = 'Не заполнено поле "Идентификационный номер налогоплательщика юридического лица"';
suspend;
end
if ((:IPFK is null and :IP_LASTNAME is not null) or (:IPFK is not null and :IP_LASTNAME is null)) then
begin
ERRORINFO = 'Не заполнено поле "Фамилия индивидуального предпринимателя"';
suspend;
end
if ((:IPFK is null and :IP_FIRSTNAME is not null) or (:IPFK is not null and :IP_FIRSTNAME is null)) then
begin
ERRORINFO = 'Не заполнено поле "Имя индивидуального предпринимателя"';
suspend;
end
if ((:IPFK is null and :IP_MIDDLENAME is not null) or (:IPFK is not null and :IP_MIDDLENAME is null)) then
begin
ERRORINFO = 'Не заполнено поле "Отчество индивидуального предпринимателя"';
suspend;
end
if ((:IPFK is null and :IP_GOSREGNUM is not null) or (:IPFK is not null and :IP_GOSREGNUM is null)) then
begin
ERRORINFO = 'Не заполнено поле "Государственный регистрационный номер записи о государственной регистрации индивидуального предпринимателя"';
suspend;
end
if ((:IPFK is null and :IP_INN is not null) or (:IPFK is not null and :IP_INN is null)) then
begin
ERRORINFO = 'Не заполнено поле "Идентификационный номер налогоплательщика индивидуального предпринимателя"';
suspend;
end
if (:LICENSE_REG_NUM is null) then
begin
ERRORINFO = 'Не заполнено поле "Номер лицензии"';
suspend;
end
if (:NUMDOC is null) then
begin
ERRORINFO = 'Не заполнено поле "Номер бланка"';
suspend;
end
if (:SERDOC is null) then
begin
ERRORINFO = 'Не заполнено поле "Серия бланка"';
suspend;
end
if (:LICENSE_STATUSESFK is null) then
begin
ERRORINFO = 'Не заполнено поле "Статус лицензии"';
suspend;
end
if (:BASISTYPEDOCFK is null) then
begin
ERRORINFO = 'Не заполнено поле "Тип документа основания о предоставлении лицензии"';
suspend;
end
if (:NUMLICDOC is null) then
begin
ERRORINFO = 'Не заполнено поле "Номер приказа (распоряжения) лицензирующего органа о предоставлении лицензии"';
suspend;
end
if (:DATELICDOC is null) then
begin
ERRORINFO = 'Не заполнено поле "Дата приказа (распоряжения) лицензирующего органа о предоставлении лицензии"';
suspend;
end
if (:REG_DATE is null) then
begin
ERRORINFO = 'Не заполнено поле "Дата внесения в реестр лицензий лицензирующего органа сведений о лицензиате"';
suspend;
end
if ((:DATELICDOC_DUBL is null and :DUBL = '1') or (:DATELICDOC_DUBL is not null and :DUBL is null)) then
begin
ERRORINFO = 'Не заполнено поле "Дата выдачи дубликата лицензии"';
suspend;
end
/*Основания и даты проведения проверок лицензиатов и реквизиты актов, составленных по результатам проведенных проверок –
поле обязательно для заполнения, в случае если проверки проводились;*/
if (((:BASISTYPEDOCFK_NEW is null and :LDS_ID = '6') or (:BASISTYPEDOCFK_NEW is not null and :LDS_ID is null)) or ((:BASISTYPEDOCFK_NEW is null and :LIC_NEW_LICENSEOLDFK is not null) or (:BASISTYPEDOCFK_NEW is not null and :LIC_NEW_LICENSEOLDFK is null))) then
begin
ERRORINFO = 'Не заполнено поле "Тип документа основания прекращения действия лицензии"';
suspend;
end
if (((:NUMLICDOC_NEW is null and :LDS_ID = '6') or (:NUMLICDOC_NEW is not null and :LDS_ID is null)) or ((:NUMLICDOC_NEW is null and :LIC_NEW_LICENSEOLDFK is not null) or (:NUMLICDOC_NEW is not null and :LIC_NEW_LICENSEOLDFK is null))) then
begin
ERRORINFO = 'Не заполнено поле "Номер основания прекращения действия лицензии"';
suspend;
end
if (((:DATELICDOC_NEW is null and :LDS_ID = '6') or (:DATELICDOC_NEW is not null and :LDS_ID is null)) or ((:DATELICDOC_NEW is null and :LIC_NEW_LICENSEOLDFK is not null) or (:DATELICDOC_NEW is not null and :LIC_NEW_LICENSEOLDFK is null))) then
begin
ERRORINFO = 'Не заполнено поле "Дата основания прекращения действия лицензии"';
suspend;
end
-- 4.1.1.}
-- {4.2.1
if (:DATA_END < :DATELICDOC) then
begin
ERRORINFO = 'Срок действия меньше чем "Дата приказа (распоряжения) лицензирующего органа о предоставлении лицензии"';
suspend;
end
if (:DATELICDOC > :PAKET_DATE_TIME) then
begin
ERRORINFO = 'Дата приказа (распоряжения) лицензирующего органа о предоставлении лицензии больше даты формирования пакета';
suspend;
end
if (:REG_DATE > :PAKET_DATE_TIME) then
begin
ERRORINFO = 'Даты внесения в реестр лицензий лицензирующего органа сведений о лицензиате больше даты формирования пакета';
suspend;
end
if (:CHECK_REASONS_DATES is null) then
begin
ERRORINFO = 'Не заполнено поле "Основание и даты проведения проверок лицензиата, акты по результатам проверок"';
suspend;
end
if (DUBL = '1' and (:DATELICDOC_DUBL < :DATELICDOC)) then
begin
ERRORINFO = 'Дата выдачи дубликата лицензии меньше чем "Дата приказа (распоряжения) лицензирующего органа о предоставлении лицензии"';
suspend;
end
if ((LDS_ID = '6' or :LIC_NEW_LICENSEOLDFK is not null) and (:DATELICDOC_NEW < :DATELICDOC)) then
begin
ERRORINFO = 'Дата основания прекращения действия лицензии меньше чем "Дата приказа (распоряжения) лицензирующего органа о предоставлении лицензии"';
suspend;
end
-- 4.2.1}
--{4.2.4
if ((char_length(:GOSREGNUM) != 13) and (:RBD_SCHOOLFK is not null)) then
begin
ERRORINFO = 'Поле государственный регистрационный номер записи о создании юридического лица не является тринадцатизначным числом';
suspend;
end
if ((char_length(:GOSREGNUM) != 15) and (:IPFK is not null)) then
begin
ERRORINFO = 'Поле государственный регистрационный номер записи о государственной регистрации индивидуального предпринимателя не является пятнадцатизначным числом';
suspend;
end
--4.2.4}
-- {4.2.5
if ((char_length(:INN) != 10) and (:RBD_SCHOOLFK is not null)) then
begin
ERRORINFO = 'Поле индивидуальный номер налогоплательщика не является десятизначным числом';
suspend;
end
if ((char_length(:IP_INN) != 12) and (:IPFK is not null)) then
begin
ERRORINFO = 'Поле индивидуальный номер налогоплательщика не является двенадцатизначным числом';
suspend;
end
-- 4.2.5}
-- {4.2.6
if ((char_length(:KPP) != 9) and (:RBD_SCHOOLFK is not null)) then
begin
ERRORINFO = 'Поле код причины постановки на учёт (КПП) не является девятизначным числом';
suspend;
end
-- 4.2.6}
END
END
|