|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Пока тренируюсь на кошках. Хочу сделать процедуру, которая бы выводила в dbms_output отформатированную строку, параметры для которой задаются либо списком, либо хеш-массивом. Делаю так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Вызываю так: Код: plsql 1. 2. 3. 4.
Но не работает, причем никак. Во первых, не удается перегрузить процедуру для типа VARHASH или просто использовать тип VARHASH. Но это видимо ограничения самого Oracle. В принципе терпимо, меня и простой индексированный список бы устроил. Но и с ним не работает, при попытке вызвать процедуру получаю ошибку ORA-06550 PLS-00306 (ошибочное число или типы аргументов). Если попробовать вызвать процедуру без параметров, то возвращает другую ошибку, ORA-06531 (ссылка на неинициализированный набор). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 17:38 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
1. Anydata особый тип, поищите примеры использования. 2. Перечень аргументов процедуры не является объектом. Почитайте гайд на предмет инициализации объектов и списков ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 17:49 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Посмотрел, теперь я вообще не понимаю, зачем нужен anydata. Я думал, что это для случаев, когда в процедуру может передаваться любой тип — но нет, нужно передавать именно этот тип и тогда уж лучше сразу кастовать в строку. Получается, что нельзя объявить процедуру с произвольным количеством параметров произвольного типа? Только перечислять arg1, arg2, arg3 и т.д., что сразу же исключает перезагрузку процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 18:18 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. произвольным количеством параметров Нельзя. Alibek B. произвольного типа Можно, но есть нюанс. Alibek B. перезагрузку процедуры Правильно - "перегрузку". Перегрузка в PL/SQL присутствует. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 18:21 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Посмотрел, теперь я вообще не понимаю, зачем нужен anydata. Я думал, что это для случаев, когда в процедуру может передаваться любой тип — но нет, нужно передавать именно этот тип и тогда уж лучше сразу кастовать в строку. Получается, что нельзя объявить процедуру с произвольным количеством параметров произвольного типа? Только перечислять arg1, arg2, arg3 и т.д., что сразу же исключает перезагрузку процедуры. зачем anydata Вам решать у Вас в процедуре один параметр (таблица) в таблице может быть произвольное к-во елементов + Вы запутались с anydata при вызове CC_LIBS.CC_LOG тип параметра должен быть varlist а Вы подсовываете два строковых параметра зы загадочный вывод DBMS_OUTPUT.PUT_LINE('LIST: #'||i); зыы создавать процедуры с переменым числом параметром показывал Володя Бегун но я не понял как (мне и не надо было) .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 18:51 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax при вызове CC_LIBS.CC_LOG тип параметра должен быть varlist а Вы подсовываете два строковых параметра Это я и имел ввиду, что вместо списка переменных мне нужно передать переменную специального типа со списком значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 18:58 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax создавать процедуры с переменым числом параметром Например так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 19:06 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. которая бы выводила в dbms_output отформатированную строку Можно и кучу всего передать одним параметром, но в твоем случае необоснованно. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 19:29 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Передавать данные, используя предварительно подготовленный словарь или JSON/XML — это совсем не то же, что вызвать функцию и просто передать в нее список параметров. Например функция для формирования локализованных сообщений объявлена так: Код: plsql 1. 2. 3.
Вот это вот args ... и было бы идеальным вариантом, но в самописной процедуре это не срабатывает. А решение Владимира я честно говоря вообще не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 19:58 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B., XML был использован только для демонстрации, что можно передать массив хлама как параметр anydata если сильно хочется. В Oracle нет документированного способа реализовывать varargs. Что мешает передавать коллекцию строк как один параметр? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 20:42 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Для коллекции нужно объявить ее тип, затем объявить переменную, затем заполнить коллекцию и только после этого передать в процедуру/функцию. Это получается слишком многословно, по сравнению с util.format или utl_lms.format_message. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 21:00 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
У меня есть такая пачка функций на три основных типа данных (строка/число/дата) в любых сочетаниях: Код: plsql 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.
Но при таком вызове: cc_libs.fmt(null, 'hh24:mi') возникает ошибка PLS-00307 (слишком много описаний). Видимо из-за невозможности сопоставить null с каким-то определенным вариантом; если вместо null использовать переменную или столбец таблицы, то такой неоднозначности нет. А можно ли это как-то обойти? Например может быть можно было указать вариант для null-значения или указать приоритет? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 21:29 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Но при таком вызове: cc_libs.fmt(null, 'hh24:mi') возникает ошибка PLS-00307 (слишком много описаний). Код: plsql 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.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 23:26 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Подсмотрел Util.Format и сделал свой форматтер. Точнее еще не сделал, но близко к тому. Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 09:45 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Код: plsql 1.
Alibek B. Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:05 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Делать перегрузку для всех возможных сочетаний типов данных 9 аргументов — это как-то перебор. Если найду способ передавать список параметров (желательно произвольного типа), то переделаю, а пока так. Поэтому все аргументы будут строковыми, а тип данных будет определятся исходя из содержимого и строки формата. Если строка формата относится к числовым типам, то аргумент будет приводится к числу, то же для даты. Если опознать не удается, будет использоваться как строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:12 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. тип данных будет определятся исходя из содержимого и строки формата. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:19 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
А пояснить можно, в чем именно? Я планирую делать так. 1. Если задана строка формата: 1.а. Ищем FM, 9, 0, G, D, точка — если находим, то считаем числом. 1.б. Ищем Y, M, D, HH, MI — если находим, то считаем датой. 2. Проверяем значения: 2.а. Проверяем по некоторым шаблонам (####-##-##, ##.##.####), если совпадает, то считаем датой. 2.б. Проверяем по маске /^\d+$/ (и некоторым другим), если совпадает, то считаем числом. 3. Все остальное считаем строкой. На все случаи этого недостаточно, но 90% сценариев это закроет, а для остальных случаев нужно будет использовать предварительно отформатированные в нужный формат значения как строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 10:49 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. 2.а. Проверяем по некоторым шаблонам (####-##-##, ##.##.####), если совпадает, то считаем датой. Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:01 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
А при рекурсивном вызове у процедур нет стека? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
У меня такое ощущение, что при рекурсивном вызове FORMAT значение переменной tagPos изменяется в том числе и в родительском контексте. Собственно не ощущение, отладочный вывод именно это и показывает. В PL/SQL действительно нет стека? Или я что-то делаю неправильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:05 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
-2- Какое здесь значение даты? Ну пользователя совсем за идиота держать не нужно. Если пользователю удобно использовать автоматическое приведение типов, то он сам предварительно настроит для сессии локаль. А если он вручную приводит значения с потерей точности, то он видимо знает, что делает, и будет задавать строку формата с учетом своих действий. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:07 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Если пользователю удобно использовать ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:17 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Конечный пользователь чего? Операторы ИС разумеется про него знать не знают. Он нужен прежде всего для логов и информационных сообщений скриптов, то есть пользователем форматтера будет различная автоматизация, которую обслуживают/настраивают админы ИС. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:23 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Он нужен прежде всего для логов и информационных сообщений скриптов, то есть пользователем форматтера будет различная автоматизация, которую обслуживают/настраивают админы ИС. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:27 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. А если он вручную приводит значения с потерей точности, то он видимо знает, что делает, и будет задавать строку формата с учетом своих действий. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 11:28 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
"оффтоп" Месье Alibek B. пытается принести JS-стайл в Oracle. Фу фу фу ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:26 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Или я что-то делаю неправильно? Нашел ошибку у себя, рекурсия работает нормально. Текущая версия пакета: Код: plsql 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.
Функция SCAN, которая будет распознавать тип данных, пока еще не готова, поэтому все аргументы обрабатываются как строки. Плюс условные шаблоны пока не реализованы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:55 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Текущая версия пакета: ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 13:58 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
У меня были вопросы, мне с ними помогли. Во-первых, это правила хорошего тона, дать комментарии на советы. Во-вторых, подобная утилита может кому-нибудь пригодится. Кому это неинтересно, просто пропустят данную тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:37 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. Для коллекции нужно объявить ее тип, затем объявить переменную, затем заполнить коллекцию и только после этого передать в процедуру/функцию. Это получается слишком многословно , по сравнению с util.format или utl_lms.format_message. когда появилась anydata я надеялся что со временем доделают неявное преобразование/перегрузку чтоб дотустимо было Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
ведь известно ж что надо делать ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 14:48 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Alibek B. подобная утилита может кому-нибудь пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:05 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax я надеялся что со временем доделают неявное преобразование/перегрузку Да, я думал, что ANYDATA это псевдотип, который соответствует любому поддерживаемому типу данных. Без этого применять ANYDATA намного менее удобно. Elic Недоделаный сырник? Эта утилита вполне рабочая, просто пока работает только со строковыми типами данных (точнее все типы данных приводит к строкам). Чуть позже я ее доделаю и выложу окончательную версию. Скелет программы и работа с шаблонами уже готовы и меняться не будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:15 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax я надеялся что со временем доделают неявное преобразование/перегрузку чтоб дотустимо было В каком формате типы данных отличные от строки должны быть преобразованы в строку и обратно? PS: классы обертки для примитивных типов и полиморфизм присутствуют в ООП, в pl/sql такие конструкции отсутствуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:23 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax я надеялся что со временем доделают неявное преобразование/перегрузку Alibek B. пока работает только со строковыми типами данных В типичных употреблениях форматера достаточно десяток строковых, десяток числовых параметров, пяток таймстампов, пяток интервалов. Для этого anydata, overload и прочего изобретать не нужно, решается декларацией обычных скалярно-типизованных параметров с default. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:32 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
iOracleDev Stax я надеялся что со временем доделают неявное преобразование/перегрузку чтоб дотустимо было В каком формате типы данных отличные от строки должны быть преобразованы в строку и обратно? PS: классы обертки для примитивных типов и полиморфизм присутствуют в ООП, в pl/sql такие конструкции отсутствуют. нет сохранить согласно типу в правой части неявно переобразовать/трансформировать в :=sys.anyData.convertVarchar2|date|number...( зы также неявно применять :=getXXX .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:39 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
-2- Создай свой тип с однобуквенным именем и конструкторами/сеттерами на вкус и цвет. Теоретически можно создать тип с набором полей разных примитивных типов, создать конструкторы и сеттеры перегруженные для разных примитивных типов, функции типа isDate, isNumber и т.п., создать перегруженные геттеры-процедуры с out параметром. Только какая от этого практическая польза? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:43 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax, Нельзя проделывать такие фокусы с примитивными типами, с классами можно, pl/sql процедурный язык, конечно нужно было его трансформировать в объектный, лет этак 15 назад, но увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:47 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
-2- Создай свой тип с однобуквенным именем и конструкторами/сеттерами на вкус и цвет. всеравно придется пользовать конструктор vy:=t.d(sysdate) вместо vy:=sysdate; хотелка в том чтоб неявное преобразование делал оракля .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:48 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
iOracleDev Stax, Нельзя проделывать такие фокусы с примитивными типами, с классами можно, pl/sql процедурный язык, конечно нужно было его трансформировать в объектный, лет этак 15 назад, но увы. я не говорю о трансформировании в ООП говорю что конкретно для ANYDATA добавіть такой "синтаксический" сахар зачем тогда ANYDATA, если каждый может "создать свой тип с однобуквенным именем и конструкторами/сеттерами на вкус и цвет." ANYDATA должна иметь чутку своей специфики напр в древних версиях кляуза TABLE обязательна, слишал что в новых можно упускать так и для ANYDATA - разрешить яно не указывать вызов контрукторов ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 15:58 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax, Забили уже давно на pl/sql, не развивается он, только костыли пихают, все хотелки мимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:02 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Stax хотелка в том чтоб неявное преобразование Stax "синтаксический" сахар ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2019, 16:08 |
|
Вопросы по package/procedure
|
|||
---|---|---|---|
#18+
Добавил работу с типами данных number/date. Декларации Код: plsql 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.
Тело Код: plsql 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. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415.
Версия еще не окончательная, не сделаны условные шаблоны (возвращать пустую строку, если внутри шаблона отсутствуют значения), пока не придумал, как это сделать. Через пару дней доделаю. Пример: Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 09:22 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1881799]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 175ms |
0 / 0 |