Size: a a a

2021 February 17

MC

Max Chistyakov in sql_ninja
Gopneg
а я про вложенные вызовы написал, а не про сессии
надо проверить, интересно

Но вроде, не должны конфликтовать, я даже проверял уже вроде такой кейс
источник

G

Gopneg in sql_ninja
т.е. внутри одной процедуры мы создаем темповую таблицу, и внутри другой сторед процедуры которую вызываем она будет недоступна?
источник

G

Gopneg in sql_ninja
вы там говна поели?
источник

G

Gopneg in sql_ninja
вызываем вложенно, внутри той процедуры в которой создали темп
источник

T

Timus in sql_ninja
Max Chistyakov
зачем в процедуре, в которой выполнение идёт в одну сторону, без  циклов, ветвлений и условий для отката/ повторения транзакции, писать конструкции следующего вида?
  IF OBJECT_ID('tempdb.dbo.#tmp_spam_coupon_orders', 'U') IS NOT NULL
     DROP TABLE #tmp_spam_coupon_orders;

 CREATE TABLE #tmp_spam_coupon_orders
 (
   wbuser_id INT NOT NULL PRIMARY KEY CLUSTERED
 );

На третьем месте работы уже такое вижу. Ещё иногда в конце процедуры добавляют DROP TABLE #
tmp_spam_coupon_orders
(с одним знаком #)
мы такое используем, когда процедура вызывается из SSIS пакета.
источник

ДС

Дмитрий Степанов... in sql_ninja
Nick Proskuryakov
Это не важно
Ну здрасте, в рамках сессии имена не уникальны, @Gopnegg прав
источник

NP

Nick Proskuryakov in sql_ninja
Чёт видимо не все прочитал)
источник

ДС

Дмитрий Степанов... in sql_ninja
У меня по подобной схеме куча etl-кого дерьма работает. Часть процедур стандартизируют данные, часть привязывает к текущим данным, и почти все они дрюкают одну таблицу
источник

MC

Max Chistyakov in sql_ninja
Max Chistyakov
надо проверить, интересно

Но вроде, не должны конфликтовать, я даже проверял уже вроде такой кейс
Ага, если я тебя правильно понял, то да.

Можно создать временную таблицу с именем, а потом вызвать процедуру, которая внутри себя такую же временную таблицу создаёт
create procedure #p1 as 
begin
 create table #temp (a int);
 insert into #temp (a) values (1);

 select * from #temp;
end
go

create procedure #p2 as
begin
 create table #temp (a int);
 insert into #temp (a) values (2);
 execute #p1;
 insert into #temp (a) values (3);
 select * from #temp;

end
go

execute #p2;

drop procedure #p2;
drop procedure #p1;
источник

G

Gopneg in sql_ninja
Max Chistyakov
Ага, если я тебя правильно понял, то да.

Можно создать временную таблицу с именем, а потом вызвать процедуру, которая внутри себя такую же временную таблицу создаёт
create procedure #p1 as 
begin
 create table #temp (a int);
 insert into #temp (a) values (1);

 select * from #temp;
end
go

create procedure #p2 as
begin
 create table #temp (a int);
 insert into #temp (a) values (2);
 execute #p1;
 insert into #temp (a) values (3);
 select * from #temp;

end
go

execute #p2;

drop procedure #p2;
drop procedure #p1;
вот жеж залупа!
источник

G

Gopneg in sql_ninja
Max Chistyakov
Ага, если я тебя правильно понял, то да.

Можно создать временную таблицу с именем, а потом вызвать процедуру, которая внутри себя такую же временную таблицу создаёт
create procedure #p1 as 
begin
 create table #temp (a int);
 insert into #temp (a) values (1);

 select * from #temp;
end
go

create procedure #p2 as
begin
 create table #temp (a int);
 insert into #temp (a) values (2);
 execute #p1;
 insert into #temp (a) values (3);
 select * from #temp;

end
go

execute #p2;

drop procedure #p2;
drop procedure #p1;
впрочем дроп темповой таблицы все равно приведет к тому что все сломается
источник

g

greeninsania in sql_ninja
У нас дропы добавляются для удобства отладки. Когда код из процедуры запускаешь вне процедуры, просто в студии для теста, чтобы не ругалось, что table already exists.
источник

ML

Mihail Li in sql_ninja
Gopneg
впрочем дроп темповой таблицы все равно приведет к тому что все сломается
не сломается. но не рекомендуется для производительности.
тоже использутся, такая конструкции , для тестов , но скорее "потому что так принято"
источник

G

Gopneg in sql_ninja
Mihail Li
не сломается. но не рекомендуется для производительности.
тоже использутся, такая конструкции , для тестов , но скорее "потому что так принято"
ну добавь в код макса дроп и посмотри, сломается или нет
источник

G

Gopneg in sql_ninja
оно и так-то хуйпойми как работало (не нашел в доке про это)
а с дропом ваще сломается
источник

ML

Mihail Li in sql_ninja
Gopneg
ну добавь в код макса дроп и посмотри, сломается или нет
источник

G

Gopneg in sql_ninja
а ты зачем все остальное удалил?
источник

G

Gopneg in sql_ninja
источник

G

Gopneg in sql_ninja
а, ты не удалил, ты в конце дроп ебанул, все равно не по ТЗ %)
источник

ML

Mihail Li in sql_ninja
Gopneg
а, ты не удалил, ты в конце дроп ебанул, все равно не по ТЗ %)
ага, твой вариант ломается, не понял (сначала) куда дроп пихать, чтобы сломалось )
источник