Как стать автором
Обновить
25
0
Klajnor @Klajnor

Пользователь

Отправить сообщение

Дополню свои прошлые сообщения тут таким примером.

И да, я реально считаю MSSQL тупым идиотом. Но я знаю как с этим бороться.

create or alter procedure up_second
as
begin
  create table #t (
      inc int not null identity(1,1)
    , value_i int not null
    , primary key (inc)
  )

  insert into #t (value_i)
  select 2

  select 'DEBUG 2' [DEBUG 2], * from #t

end
GO

create or alter procedure up_main
as
begin
  create table #t (
      inc int not null identity(1,1)
    , value_s varchar(max) not null
    , primary key (inc)
  )
  insert into #t (value_s)
  select 's1'


  select 'DEBUG 1' [DEBUG 1], * from #t

  exec up_second

  select 'DEBUG 3' [DEBUG 3], * from #t

end
GO

--exec up_second
exec up_main
GO

drop procedure up_main
drop procedure up_second

Вот пример кода. Мы ожидаем тут увидеть Во втором отладочном селекте value_i = 2

Но этого не произойдёт, потому что мы на самом деле получим ошибку

Msg 207, Level 16, State 1, Procedure up_second, Line 10 [Batch Start Line 37]
Invalid column name 'value_i'.

Дропнуть таблицу в начале - тоже не приведёт ни к чему хорошему.

Дальше - интереснее. Если добавить вызов up_second перед up_main - то все работает и не падает и каждая из процедур нормально воспринимает свой контекст. Потому что в этому случае сервер компилирует up_second на использование таблицы с интовым полем.

И вывод из всего этого нужно сделать такой:

1) Конструкции когда дропаются в начале хранимки временные таблицы - они допустимы

Но надо быть уверенным, что это "головная" хранимка. Во внутренних - это действительно может быть проблемой

if object_id('tempdb..#mytemp') is not null
DROP TABLE #mytemp

или

DROP TABLE if exists #mytemp

2) Внутренние хранимки не должны сами создавать таблицы, если ожидают данные из какой-то известной внешней временной таблицы

И при разработке таких хранимок нужно помнить, какую структуру имеет таблица

Мне обидно, что SQL server считают идиотом со стекающими от вырождения слюнями, идиотом, неспособным заботиться о контексте выполнения

Ваш код способен сделать из разработчика, который читает ваш код, - такого идиота. Он очень удивится, что в начале и конце хранимки у таблицы поля разные

Этот "антипатерн" растёт оттуда же - если надо код из хранимки выполнить отдельно

Не. Если речь об opkg - то общее с OpenWrt только название. Пакеты и репозитории свои

Спасибо! Понятно теперь стало

А эта вируалка в списке отображается с плашкой "always free"?

X64 машины у меня отображается с плашкой, а тут три раза создавал, внимательно все шаги проверял - а плашки нет.

Плюс я где-то вычитал, что эта машина будет уничтожена через 30 дней и надо будет уже создавать бесплатные навсегда. Но ссылку я потерял, да и источник был какой-то не надёжный

Всей ветке выше

Странно, я легко зарегистрировался и легко создал машину. Посмотрим сколько проживет, пока два месяца

Живёт как запасная

Из собственного опыта:
Soap, в нем json, в нем имя файла и base64 строка, в ней zip архив, а в нем xml файл

Был Кирилл, а стал Артем

С LUA не понимаю. Вроде нет поддержки уже
Спасибо
Хорошая идея.
Да, верно. Ещё и от настроек мерчанта зависит
Я ни разу не сталкивался с ситуацией, чтобы Сбербанк в интернете позволял что-то оплатить без проверки 3D Secure (без подтверждения через SMS)

3D Secure должен поддерживаться двумя сторонами, как банком выпустившим карту, так и тем банком чей платёжный шлюз используется для приёма платежа.
Только вчера платил за коммуналку (если точнее — электричество на сайте мосэнергосбыт) с карты сбера без ввода кода 3D Secure. Платёжный шлюз от Альфа-Банка
А с другой стороны на сайте mi.com или miui.com практически нигде нет приставки Pro.
Например при скачивании прошивки будет Redmi Note 3 Qualcomm и Redmi Note 3 MTK
Вспомнился счётчик электроэнергии Меркурий 200 — там кнопки 2, но режимов отображения разной информации очень много
В детстве были у папы часы «электроника», уже и не помню какой точно модели.
Так меня так поразило, что при нажатии на секретную комбинацию клавиш можно было ввести погрешность хода.
Монтана тех времен(примерно 95 — 97 года) была простая в настройке, а вот у электроники было все намного сложнее
Так при использовании CTE точка с запятой и отделяет with от предыдущей команды, чтобы было отличие от табличных хинтов.
Вот sp_executesql — это правильно
Иначе как раз и будут проблемы и со строками и т.д.

А для простых примеров зачастую и не нужно никаких динамических запросов. Только в случае когда сложный отбор по большому кол-ву условий, которые могут быть заданы, а могут быть и не заданы

А я и не знал, что счётчик может показывать текущее потребление
У меня так девушка на кассе купила по карте только пакет за 3 рубля. Получилось из-за путаницы с товарами, всё кроме пакета пробили другому покупателю, а он ещё и часть продуктов утащил. В конечном итоге разобрались и рассчитались с ним наличными

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность