19:58:35 От Пользователь Отус кому Ведущие вебинара и участники : Добрый вечер 19:59:17 От Пользователь Отус : Добрый вечер 19:59:17 От Supernic3 : Всё в порядке :) 19:59:27 От Sergey Prokopchuk : ++ 19:59:34 От Tim : + 20:00:05 От Supernic3 : В порядке скачивания, я буду 20:00:19 От Supernic3 : + 20:00:24 От Kirill Amurskiy кому Ведущие вебинара и участники : --- 20:00:29 От Kirill Amurskiy кому Ведущие вебинара и участники : что поставил? 20:00:30 От Смирнов Алексей кому Ведущие вебинара и участники : - 20:01:08 От Пользователь Отус : Коллеги, кто хочет проделывать запросы по моему занятию в пн (TempTable vs Table variable) качайте vagrant box https://app.vagrantup.com/gusztavvargadr/boxes/w16s-sql17d 20:01:48 От Kirill Amurskiy кому Ведущие вебинара и участники : #ms-sql-201901 - вот в этой группе? 20:02:01 От Kirill Amurskiy кому Ведущие вебинара и участники : что-то пропустил там 20:02:02 От Kirill Amurskiy кому Ведущие вебинара и участники : нет 20:02:07 От Kirill Amurskiy кому Ведущие вебинара и участники : какого числа 20:02:35 От Kirill Amurskiy кому Ведущие вебинара и участники : нашел, норм 20:02:43 От Александр Голиков : - 20:02:43 От Kirill Amurskiy кому Ведущие вебинара и участники : - 20:02:44 От Sergey Prokopchuk : - 20:02:45 От prib : - 20:02:45 От Supernic3 : - 20:02:48 От Смирнов Алексей : - 20:02:50 От Алекс : - 20:08:54 От Kirill Amurskiy кому Ведущие вебинара и участники : что значит скоуп? время? память? 20:09:44 От Пользователь Отус : область видимости 20:09:52 От Kirill Amurskiy кому Ведущие вебинара и участники : а физически где существует? 20:10:13 От Kirill Amurskiy кому Ведущие вебинара и участники : понял 20:12:30 От Kirill Amurskiy кому Ведущие вебинара и участники : что это значит simple? 20:17:36 От Пользователь Отус : C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA 20:18:58 От Kirill Amurskiy кому Ведущие вебинара и участники : понял, спасибо 20:19:03 От Kirill Amurskiy кому Ведущие вебинара и участники : очень позновательно) 20:20:08 От Смирнов Алексей : + 20:20:09 От Supernic3 : + 20:20:10 От Aleksandr кому Ведущие вебинара и участники : + 20:20:10 От Александр : + 20:20:12 От prib : + 20:20:13 От Evgeniy кому Ведущие вебинара и участники : + 20:20:13 От Sergey Prokopchuk : + 20:20:14 От Алекс : + 20:21:55 От Kirill Amurskiy кому Ведущие вебинара и участники : когда она от туда исчезнет? 20:24:02 От Александр Голиков : tempd..T 20:24:06 От Пользователь Отус : create table #T (id int null); 20:24:25 От Kirill Amurskiy кому Ведущие вебинара и участники : такие простые не надо, мне кажется 20:25:46 От Kirill Amurskiy кому Ведущие вебинара и участники : я имею в виду в чат скидывать 20:26:38 От Александр Голиков : еще олин эксземляр ССМС 20:30:02 От Kirill Amurskiy кому Ведущие вебинара и участники : вот это не очень понятно 20:30:07 От Kirill Amurskiy кому Ведущие вебинара и участники : что такое перекомпилировать? 20:30:47 От Kirill Amurskiy кому Ведущие вебинара и участники : и это нужно делать при увеличении количества записей? 20:31:31 От Kirill Amurskiy кому Ведущие вебинара и участники : и в том и в другом случае нужно перекомпилировать? 20:31:42 От Алекс : Команду привидите 20:31:46 От Kirill Amurskiy кому Ведущие вебинара и участники : а зачем при увеличении количества записей? 20:32:43 От Kirill Amurskiy кому Ведущие вебинара и участники : план запроса какого? 20:33:06 От Алекс : Т.е., если в хранимой процедуре таблица меняется по каким-то условиям, я должен перекомпилировать процедуру? 20:33:26 От Kirill Amurskiy кому Ведущие вебинара и участники : а для обычных таблиц тоже существует такой план рядом с ними? 20:36:52 От Алекс : 2 Алекса. Я нашел 20:38:28 От Kirill Amurskiy кому Ведущие вебинара и участники : круто, накал понимания резко вырос 20:38:37 От Алекс : + 20:39:32 От Джони : а почему сообщения участников не видны в чате, сложно ориентироваться? 20:39:55 От Пользователь Отус : SET NOCOUNT ON; USE tempdb; IF OBJECT_ID('dbo.proc1', 'P') IS NOT NULL DROP PROC dbo.proc1; IF OBJECT_ID('dbo.proc2', 'P') IS NOT NULL DROP PROC dbo.proc2; GO CREATE PROC dbo.proc1 AS CREATE TABLE #T1(col1 INT NOT NULL); INSERT INTO #T1 VALUES(1); SELECT * FROM #T1; EXEC dbo.proc2; GO CREATE PROC dbo.proc2 AS CREATE TABLE #T1(col1 INT NULL); INSERT INTO #T1 VALUES(2); SELECT * FROM #T1; GO 20:39:55 От Алекс : Да, какие-то видно, какие-то нет 20:40:07 От Александр : Им необходимо нажать ведущеми и участникам 20:40:10 От Supernic3 : Всех тех, кого не видно, пускай поставят "Ведущие вебинара и участники" 20:40:17 От Supernic3 : Не-не, "и участники" тоже нужно 20:40:38 От Джони : ок, спс 20:40:53 От Tim : ok 20:40:58 От Алекс кому Ведущие вебинара и участники : у меня было и вед и участники, и не всех было видно 20:41:01 От Александр : не мы не видим те кто вам в личку типо пишет 20:41:03 От Александр : )) 20:41:13 От prib : + 20:41:17 От Sergey Prokopchuk : Кирила не видно в чате, как я понимаю 20:41:23 От Kirill Amurskiy кому Ведущие вебинара и участники : у меня этот запрос падает) 20:42:24 От Kirill Amurskiy : а теперь 20:42:28 От Александр : + 20:42:31 От Sergey Prokopchuk : видно 20:42:32 От Kirill Amurskiy : понял 20:42:32 От Джони : + 20:42:34 От prib : сейчас норм 20:42:47 От Алекс кому Ведущие вебинара и участники : у меня только ведущим и вроде стало лучше 20:43:18 От Kirill Amurskiy : так go лишний по моему 20:43:25 От Kirill Amurskiy : у меня на его ругается 20:43:29 От Kirill Amurskiy : первый go 20:43:48 От Kirill Amurskiy : Msg 102, Level 15, State 1, Line 1 Incorrect syntax near 'GO'. 20:43:53 От Kirill Amurskiy : вот так ругается 20:44:09 От Supernic3 : Идёт первый exec на proc2, которого ещё не существует. 20:44:15 От Supernic3 : Видимо, у Вас уже создано было 20:44:17 От Пользователь Отус : SET NOCOUNT ON; USE tempdb; IF OBJECT_ID('dbo.proc1', 'P') IS NOT NULL DROP PROC dbo.proc1; IF OBJECT_ID('dbo.proc2', 'P') IS NOT NULL DROP PROC dbo.proc2; GO CREATE PROC dbo.proc1 AS CREATE TABLE #T1(col1 INT NOT NULL); INSERT INTO #T1 VALUES(1); SELECT * FROM #T1; EXEC dbo.proc2; GO CREATE PROC dbo.proc2 AS CREATE TABLE #T1(col1 INT NULL); INSERT INTO #T1 VALUES(2); SELECT * FROM #T1; GO 20:44:52 От Kirill Amurskiy : общий лог вот такой 20:44:53 От Kirill Amurskiy : sg 102, Level 15, State 1, Line 1 Incorrect syntax near 'GO'. Msg 111, Level 15, State 1, Line 1 'CREATE/ALTER PROCEDURE' must be the first statement in a query batch. Msg 102, Level 15, State 1, Line 1 Incorrect syntax near 'GO'. Msg 111, Level 15, State 1, Line 1 'CREATE/ALTER PROCEDURE' must be the first statement in a query batch. Msg 2714, Level 16, State 1, Line 1 There is already an object named '#T1' in the database. Msg 102, Level 15, State 1, Line 1 Incorrect syntax near 'GO'. 20:45:39 От Supernic3 : Та же проблема 20:45:57 От Kirill Amurskiy : видимо из за отсутствия у нас процедур 20:46:07 От Kirill Amurskiy : у вас есть и отрабатывает нормально, а на голую не работает 20:47:12 От Пользователь Отус : ALTER PROC dbo.proc2 AS CREATE TABLE #T1(col1 INT NULL, col2 INT NOT NULL); INSERT INTO #T1 VALUES(2, 2); SELECT * FROM #T1; GO 20:47:13 От Supernic3 : exec proc2, а её не существовало на тот момент. Так как если она есть - она дропается. exec proc2 происходит ДО её вывода.. : 20:47:29 От Supernic3 : EXEC dbo.proc2 CREATE PROC dbo.proc2 AS 20:47:57 От Supernic3 : Поменять местами exec и create proc2 20:48:10 От Пользователь Отус : EXEC dbo.proc1; 20:48:38 От Александр : по отдельности делаю выполнение и всё работает 20:48:47 От Пользователь Отус : EXEC dbo.proc2; 20:49:48 От Пользователь Отус : EXEC sp_recompile 'dbo.proc2'; 20:51:24 От Пользователь Отус : IF OBJECT_ID('dbo.proc1', 'P') IS NOT NULL DROP PROC dbo.proc1; IF OBJECT_ID('dbo.proc2', 'P') IS NOT NULL DROP PROC dbo.proc2; 20:56:02 От Алекс кому Ведущие вебинара и участники : так все-таки процедуру мы перекомпилировали или временную таблицу? Команда была EXEC sp_recompile 'dbo.proc2'; 20:58:58 От Пользователь Отус : CREATE PROC dbo.TestCaching AS CREATE TABLE #T1(n INT, filler CHAR(2000)); INSERT INTO #T1 VALUES (1, 'a'), (2, 'a'), (3, 'a'); GO ALTER PROC dbo.TestCaching AS CREATE TABLE #T1(n INT, filler CHAR(2000)); CREATE UNIQUE INDEX idx1 ON #T1(n); INSERT INTO #T1 VALUES (1, 'a'), (2, 'a'), (3, 'a'); GO 21:00:04 От Kirill Amurskiy : + 21:00:08 От Александр : + 21:00:11 От prib : + 21:01:04 От Kirill Amurskiy : почему заменился то? 21:01:32 От Kirill Amurskiy : а где? 21:01:39 От Kirill Amurskiy : внутир TestCaching? 21:02:05 От Kirill Amurskiy : угу 21:02:09 От Kirill Amurskiy : а имя от куда такое? 21:02:44 От Kirill Amurskiy : т.е. мы к этой таблице больше не можем обратиться? 21:02:47 От Александр : так же как и в 1С вылетают кракозябры такие))) 21:03:15 От Kirill Amurskiy : была то нормальная Т, а теперь вот это 21:03:21 От Александр : это полная бедааа там 21:03:26 От Kirill Amurskiy : а можно изменить, чтобы осталось имя T 21:04:26 От Александр : да интеграция есть ко конфертировать это жесть 21:08:16 От Алекс кому Ведущие вебинара и участники : Простите, пропустил - область видимости глобальных таблиц? 21:10:20 От Kirill Amurskiy : какая архитектура? падают все если упал один? 21:10:30 От Kirill Amurskiy : (извините, не уловил) 21:14:14 От Пользователь Отус кому Алекс и все члены группы : USE master; IF OBJECT_ID('dbo.CreateGlobals', 'P') IS NOT NULL DROP PROC dbo.CreateGlobals GO CREATE PROC dbo.CreateGlobals AS CREATE TABLE ##Globals ( varname sysname NOT NULL PRIMARY KEY, val SQL_VARIANT NULL ); GO EXEC dbo.sp_procoption 'dbo.CreateGlobals', 'startup', 'true'; 21:14:41 От prib : это к инстансам был вопрос 21:14:44 От Kirill Amurskiy : вы рассказывали про архитектуру инстансов SqlServer 21:15:27 От Kirill Amurskiy : понял 21:16:12 От Kirill Amurskiy : да, понял, спасибо) 21:17:51 От Kirill Amurskiy : + 21:17:55 От prib : она пустая будет после растарта? 21:17:58 От prib : таблица? 21:17:59 От Алекс кому Ведущие вебинара и участники : + 21:17:59 От Пользователь Отус кому Алекс и все члены группы : SET NOCOUNT ON; INSERT INTO ##Globals VALUES('var1', CAST('abc' AS VARCHAR(10))); SELECT * FROM ##Globals; 21:18:00 От Supernic3 : + 21:18:39 От Sergey Prokopchuk : + 21:19:39 От Пользователь Отус кому Алекс и все члены группы : Declare @MyTableVar table (Id int primary key, Lookup varchar(15)) Insert @MyTableVar values (1, '1Q2000') Insert @MyTableVar values (2, '2Q2000') Insert @MyTableVar values (3, '3Q2000') Select * from @MyTableVar Go 21:21:02 От Пользователь Отус кому Алекс и все члены группы : GO DECLARE @EmployeeLocal TABLE ( EmpID int, EmpName varchar(100), EmpAddress varchar(300), EmpDOB Date ) INSERT INTO @EmployeeLocal values ( 235, 'John Doe','Minneapolis, MN', '1975-03-01'); SELECT * FROM @EmployeeLocal GO 21:26:53 От Пользователь Отус кому Алекс и все члены группы : USE AdventureWorks2016; --initialise out timer DECLARE @log TABLE (TheOrder INT IDENTITY(1,1), WhatHappened varchar(200), WHENItDid Datetime2 DEFAULT GETDATE()) CREATE TABLE #employees (Employee NATIONAL CHARACTER VARYING(500) NOT NULL); ----start of timing INSERT INTO @log(WhatHappened) SELECT 'Starting My_Section_of_code'--place at the start --start by using a table variable for workpad DECLARE @WorkPad TABLE (NameOfEmployee NATIONAL CHARACTER VARYING(100) NOT NULL, BusinessEntityID INT PRIMARY KEY NOT NULL, NationalIDNumber NATIONAL CHARACTER VARYING(15) NOT NULL); INSERT INTO @WorkPad (NameOfEmployee, BusinessEntityID, NationalIDNumber) SELECT Coalesce(Person.Title + ' ', '') + Person.FirstName + ' ' + Coalesce(Person.MiddleName + ' ', '') + Person.LastName + ': ' + Coalesce(Person.Suffix, '') + Employee.JobTitle, Employee.BusinessEntityID, Employee.NationalIDNumber FROM HumanResources.Employee INNER JOIN Person.Person ON Person.BusinessEntityID = 21:29:15 От Алекс кому Ведущие вебинара и участники : 11 21:29:16 От prib : 11 21:29:20 От Смирнов Алексей : 11 21:29:29 От Kirill Amurskiy : 6 21:29:38 От Kirill Amurskiy : ну это типа половина понятно, половина нет) 21:29:48 От Kirill Amurskiy : тут только на практике 21:29:49 От Джони : +- 21:30:02 От Kirill Amurskiy : будем мучить домашки 21:30:20 От Джони : много теории 21:30:44 От Джони : мало практики 21:31:24 От Sergey Prokopchuk : примеры будуть прикреплены к уроку? 21:31:37 От Kirill Amurskiy : так а cte же только один раз можно использовать? 21:32:03 От Sergey Prokopchuk : лучше отдельно сбросить 21:32:32 От Kirill Amurskiy : вроде как я понял, ее можно только в одном запросе вызвать 21:32:36 От Kirill Amurskiy : т.е. в следующем уже нельзя 21:34:59 От Kirill Amurskiy : а напишите еще один селект ниже с этим же CTE 21:36:20 От Алекс кому Ведущие вебинара и участники : UNION ? 21:36:50 От Kirill Amurskiy : а вот можно еще один select написать ниже? 21:36:58 От Kirill Amurskiy : и их 2 подряд вызвать 21:37:13 От Kirill Amurskiy : я пробовал у меня ругалось 21:37:38 От Алекс кому Ведущие вебинара и участники : внутри 21:37:59 От Александр Голиков : union при рекурсии используется 21:38:03 От Александр Голиков : в сте 21:38:24 От Kirill Amurskiy : давайте 2-й запрос! 21:38:49 От Пользователь Отус кому Алекс и все члены группы : use AdventureWorks2016; WITH Sales_CTE (SalesPersonID, NumberOfOrders) AS ( SELECT SalesPersonID, COUNT(*) FROM Sales.SalesOrderHeader WHERE SalesPersonID IS NOT NULL GROUP BY SalesPersonID ) SELECT AVG(NumberOfOrders) AS "Average Sales Per Person" FROM Sales_CTE; GO 21:39:08 От Kirill Amurskiy : можете написать следующее: 21:39:14 От Kirill Amurskiy : 1. объявляетет cte 21:39:26 От Kirill Amurskiy : 2. один select из cte 21:39:35 От Kirill Amurskiy : 3. еще один select из cte 21:39:52 От Kirill Amurskiy : это понятно 21:40:11 От Kirill Amurskiy : напишите 21:40:19 От Смирнов Алексей : покажите 21:40:19 От Kirill Amurskiy : ну просто скопируйте этот select 21:40:28 От Kirill Amurskiy : просто скопируйте этот select 21:40:30 От Kirill Amurskiy : последний 21:40:32 От Kirill Amurskiy : последний 21:40:37 От Kirill Amurskiy : нет нет 21:40:38 От Kirill Amurskiy : последний 21:40:38 От Александр Голиков : =) 21:40:42 От Kirill Amurskiy : Select avg 21:40:46 От Kirill Amurskiy : select avt 21:40:58 От Kirill Amurskiy : скопируйте 3 еще раз 21:41:09 От Александр Голиков : Кирилл попробуйте сами 21:41:13 От Kirill Amurskiy : скопируйте 3 еще раз 21:41:17 От Смирнов Алексей : пункт 3 продублируйте 21:41:40 От Kirill Amurskiy : да 21:41:41 От Sergey Prokopchuk : так не будет жеж работать 21:41:42 От Александр Голиков : Область действия СТЕ хоятт выяснить экспериментальным путем 21:41:43 От Kirill Amurskiy : и теперь все выполнить 21:41:47 От Kirill Amurskiy : воот 21:41:49 От Kirill Amurskiy : даа 21:42:06 От Kirill Amurskiy : табличные переменные так работают 21:42:51 От Пользователь Отус кому Алекс и все члены группы : use AdventureWorks2016; WITH Sales_CTE (SalesPersonID, TotalSales, SalesYear) AS -- Define the first CTE query. ( SELECT SalesPersonID, SUM(TotalDue) AS TotalSales, YEAR(OrderDate) AS SalesYear FROM Sales.SalesOrderHeader WHERE SalesPersonID IS NOT NULL GROUP BY SalesPersonID, YEAR(OrderDate) ) , -- Use a comma to separate multiple CTE definitions. -- Define the second CTE query, which returns sales quota data by year for each sales person. Sales_Quota_CTE (BusinessEntityID, SalesQuota, SalesQuotaYear) AS ( SELECT BusinessEntityID, SUM(SalesQuota)AS SalesQuota, YEAR(QuotaDate) AS SalesQuotaYear FROM Sales.SalesPersonQuotaHistory GROUP BY BusinessEntityID, YEAR(QuotaDate) ) -- Define the outer query by referencing columns from both CTEs. SELECT SalesPersonID , SalesYear , FORMAT(TotalSales,'C','en-us') AS TotalSales , SalesQuotaYear , FORMAT (SalesQuota,'C','en-us') AS SalesQuota , FORMAT (TotalSales -S 21:45:07 От Пользователь Отус кому Алекс и все члены группы : use AdventureWorks2016; -- Create an Employee table. CREATE TABLE dbo.MyEmployees ( EmployeeID smallint NOT NULL, FirstName nvarchar(30) NOT NULL, LastName nvarchar(40) NOT NULL, Title nvarchar(50) NOT NULL, DeptID smallint NOT NULL, ManagerID int NULL, CONSTRAINT PK_EmployeeID PRIMARY KEY CLUSTERED (EmployeeID ASC) ); -- Populate the table with values. INSERT INTO dbo.MyEmployees VALUES (1, N'Ken', N'Sánchez', N'Chief Executive Officer',16,NULL) ,(273, N'Brian', N'Welcker', N'Vice President of Sales',3,1) ,(274, N'Stephen', N'Jiang', N'North American Sales Manager',3,273) ,(275, N'Michael', N'Blythe', N'Sales Representative',3,274) ,(276, N'Linda', N'Mitchell', N'Sales Representative',3,274) ,(285, N'Syed', N'Abbas', N'Pacific Sales Manager',3,273) ,(286, N'Lynn', N'Tsoflias', N'Sales Representative',3,285) ,(16, N'David',N'Bradley', N'Marketing Manager', 4, 273) ,(23, N'Mary', N'Gibson', N'Marketing Specialist', 4, 16); USE AdventureWorks2016; GO WITH 21:48:34 От Пользователь Отус кому Алекс и все члены группы : Это рекурсия use AdventureWorks2016; WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FROM dbo.MyEmployees WHERE ManagerID IS NULL UNION ALL SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1 FROM dbo.MyEmployees AS e INNER JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID ) SELECT ManagerID, EmployeeID, Title, EmployeeLevel FROM DirectReports WHERE EmployeeLevel <= 2 ; GO 21:49:01 От Kirill Amurskiy : я не вижу ваших сообщений в чате 21:49:20 От Джони : никто не видит) 21:49:42 От Kirill Amurskiy : полегчало) 21:49:45 От Алекс кому Ведущие вебинара и участники : поставил только Ведущим вебинара 21:50:30 От Пользователь Отус кому Алекс и все члены группы : Это определение таблицы для домашнего задания -- Create an Employee table. CREATE TABLE dbo.MyEmployees ( EmployeeID smallint NOT NULL, FirstName nvarchar(30) NOT NULL, LastName nvarchar(40) NOT NULL, Title nvarchar(50) NOT NULL, DeptID smallint NOT NULL, ManagerID int NULL, CONSTRAINT PK_EmployeeID PRIMARY KEY CLUSTERED (EmployeeID ASC) ); -- Populate the table with values. INSERT INTO dbo.MyEmployees VALUES (1, N'Ken', N'Sánchez', N'Chief Executive Officer',16,NULL) ,(273, N'Brian', N'Welcker', N'Vice President of Sales',3,1) ,(274, N'Stephen', N'Jiang', N'North American Sales Manager',3,273) ,(275, N'Michael', N'Blythe', N'Sales Representative',3,274) ,(276, N'Linda', N'Mitchell', N'Sales Representative',3,274) ,(285, N'Syed', N'Abbas', N'Pacific Sales Manager',3,273) ,(286, N'Lynn', N'Tsoflias', N'Sales Representative',3,285) ,(16, N'David',N'Bradley', N'Marketing Manager', 4, 273) ,(23, N'Mary', N'Gibson', N'Marketing Specialist', 4, 16); 21:51:00 От Kirill Amurskiy : нет 21:51:04 От Джони : нет 21:51:05 От Tim : net 21:51:05 От Kirill Amurskiy : просто я не один такой 21:51:07 От Смирнов Алексей : нет 21:51:22 От Пользователь Отус : Это к домашнему заданию -- Create an Employee table. CREATE TABLE dbo.MyEmployees ( EmployeeID smallint NOT NULL, FirstName nvarchar(30) NOT NULL, LastName nvarchar(40) NOT NULL, Title nvarchar(50) NOT NULL, DeptID smallint NOT NULL, ManagerID int NULL, CONSTRAINT PK_EmployeeID PRIMARY KEY CLUSTERED (EmployeeID ASC) ); -- Populate the table with values. INSERT INTO dbo.MyEmployees VALUES (1, N'Ken', N'Sánchez', N'Chief Executive Officer',16,NULL) ,(273, N'Brian', N'Welcker', N'Vice President of Sales',3,1) ,(274, N'Stephen', N'Jiang', N'North American Sales Manager',3,273) ,(275, N'Michael', N'Blythe', N'Sales Representative',3,274) ,(276, N'Linda', N'Mitchell', N'Sales Representative',3,274) ,(285, N'Syed', N'Abbas', N'Pacific Sales Manager',3,273) ,(286, N'Lynn', N'Tsoflias', N'Sales Representative',3,285) ,(16, N'David',N'Bradley', N'Marketing Manager', 4, 273) ,(23, N'Mary', N'Gibson', N'Marketing Specialist', 4, 16); 21:51:28 От Смирнов Алексей : + 21:51:31 От prib : ага 21:51:32 От Джони : видно 21:51:33 От Алекс кому Ведущие вебинара и участники : Думаю, надо поставить ТОЛЬКО Вежущим вебинаоа 21:51:36 От Джони : + 21:51:50 От Sergey Prokopchuk : количество самовизовов сте через юнион и есть проход по левелам рекурсии? 21:51:51 От Пользователь Отус : use AdventureWorks2016; WITH DirectReports(ManagerID, EmployeeID, Title, EmployeeLevel) AS ( SELECT ManagerID, EmployeeID, Title, 0 AS EmployeeLevel FROM dbo.MyEmployees WHERE ManagerID IS NULL UNION ALL SELECT e.ManagerID, e.EmployeeID, e.Title, EmployeeLevel + 1 FROM dbo.MyEmployees AS e INNER JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID ) SELECT ManagerID, EmployeeID, Title, EmployeeLevel FROM DirectReports WHERE EmployeeLevel <= 2 ; GO 21:53:03 От Kirill Amurskiy : + 21:53:06 От prib : да 21:53:12 От Tim : = 21:53:13 От Tim : + 21:53:37 От Kirill Amurskiy : ооо, отличная таблица 21:55:30 От Kirill Amurskiy : что значит нельзя в транзакциях? 21:56:41 От Kirill Amurskiy : т.е. под транзакцией нельзя объявить табличную переменную? 21:57:18 От Kirill Amurskiy : а если она объявлена процедуре? а я процедуру вызываю под транзакцией? 21:57:41 От Алекс кому Ведущие вебинара и участники : - 21:57:42 От Kirill Amurskiy : есть у меня 21:57:45 От Kirill Amurskiy : вот твыше 21:57:48 От Kirill Amurskiy : выше написал 21:58:48 От Kirill Amurskiy : точно должно быть можно 21:59:07 От Evgeniy кому Ведущие вебинара и участники : временная таблица хранится на диске или в оперативной памяти? 21:59:25 От Kirill Amurskiy : а то так получится, что транзакцию нельзя использовать с какими то процедурами, которые я не знаю(внутренности) 22:00:19 От Джони : + 22:00:59 От Александр Голиков : процедура может содержать СТЕ, вы можетие вызывать процедуру в транзакции 22:03:47 От Александр Голиков : что это строчка значит =) 22:03:58 От Александр Голиков : да про 3ю 22:06:07 От Sergey Prokopchuk : - 22:06:10 От Evgeniy кому Ведущие вебинара и участники : временная таблица хранится на диске или в оперативной памяти? 22:06:17 От Джони : - 22:07:45 От Джони : Спасибо! 22:07:50 От prib : спасибо! 22:07:52 От Tim : спасибо 22:07:58 От Kirill Amurskiy : спасибо! 22:08:01 От Evgeniy кому Ведущие вебинара и участники : спасибо 22:08:01 От Алекс кому Ведущие вебинара и участники : Спасибо