Как объявить скалярную переменную в sql
Перейти к содержимому

Как объявить скалярную переменную в sql

  • автор:

Объявление переменных в mysql

Как в mysql объявить переменную, присвоить ей какое нибудь значение и использовать ее в запросе? Нужно именно средствами mysql.

Отслеживать
задан 27 ноя 2016 в 14:41
1,455 1 1 золотой знак 17 17 серебряных знаков 33 33 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

SET @t1=1, @t2=2, @t3:=4;

SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;

Отслеживать
ответ дан 27 ноя 2016 в 18:09
599 4 4 серебряных знака 5 5 бронзовых знаков
а почему нет инициализации?
27 ноя 2016 в 19:14
происходит при первом присвоении, можно использовать cast, см примеры в доке
27 ноя 2016 в 23:12

  • mysql
  • sql
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.30.8466

Переменные (Transact-SQL)

Локальная переменная Transact-SQL представляет собой объект, содержащий одно значение определенного типа. Переменные обычно используются в пакетах и скриптах:

  • в качестве счетчика цикла;
  • для хранения значения, которое необходимо проверить инструкцией управления потоком;
  • для хранения значения, возвращенного функцией или хранимой процедурой.
  • Имена некоторых системных функций Transact-SQL начинаются с двух символов @ (@@). Хотя в предыдущих версиях сервера SQL Server @@функции называются глобальными переменными, @@функции не являются переменными и используются иначе. @@functions являются системными функциями, а их синтаксис использует правила для функций.
  • В представлении нельзя использовать переменные.
  • Откат транзакции не влияет на изменения переменных.

Следующий скрипт создает небольшую тестовую таблицу из 26 строк. Переменная используется в скрипте в качестве:

  • счетчика цикла для управления количеством вставляемых строк;
  • значения, вставляемого в столбец целочисленного типа;
  • аргумента функции, формирующей строку, которая вставляется в столбец символьного типа:
-- Create the table. CREATE TABLE TestTable (cola INT, colb CHAR(3)); GO SET NOCOUNT ON; GO -- Declare the variable to be used. DECLARE @MyCounter INT; -- Initialize the variable. SET @MyCounter = 0; -- Test the variable to see if the loop is finished. WHILE (@MyCounter < 26) BEGIN; -- Insert a row into the table. INSERT INTO TestTable VALUES -- Use the variable to provide the integer value -- for cola. Also use it to generate a unique letter -- for each row. Use the ASCII function to get the -- integer value of 'a'. Add @MyCounter. Use CHAR to -- convert the sum back to the character @MyCounter -- characters after 'a'. (@MyCounter, CHAR( ( @MyCounter + ASCII('a') ) ) ); -- Increment the variable to count this iteration -- of the loop. SET @MyCounter = @MyCounter + 1; END; GO SET NOCOUNT OFF; GO -- View the data. SELECT cola, colb FROM TestTable; GO DROP TABLE TestTable; GO 

Объявление переменных в языке Transact-SQL

Инструкция DECLARE инициализирует переменную Transact-SQL следующим образом:

  • Назначение имени. Имя должно иметь один @ в качестве первого символа.
  • Назначение длины и типа данных, определяемого системой или пользователем. Для числовых переменных задаются также точность и масштаб. Для переменных типа XML может быть дополнительно задана коллекция схем.
  • Присваивает созданной переменной значение NULL.

Например, следующая инструкция DECLARE создает локальную переменную @mycounter типа int.

DECLARE @MyCounter INT; 

Инструкция DECLARE позволяет объявить несколько переменных одинакового или разного типов через запятую.

Например, следующая инструкция DECLARE создает три локальные переменные с именем @LastName, @FirstName и @StateProvince, присваивая каждой из них значение NULL:

DECLARE @LastName NVARCHAR(30), @FirstName NVARCHAR(20), @StateProvince NCHAR(2); 

Областью видимости переменной называют диапазон инструкций Transact-SQL, которые могут к ней обращаться. Областью видимости переменной являются все инструкции между ее объявлением и концом пакета или хранимой процедуры, где она объявлена. Например, следующий скрипт содержит синтаксическую ошибку, поскольку переменная объявлена в одном пакете, а используется в другом:

USE AdventureWorks2022; GO DECLARE @MyVariable INT; SET @MyVariable = 1; -- Terminate the batch by using the GO keyword. GO -- @MyVariable has gone out of scope and no longer exists. -- This SELECT statement generates a syntax error because it is -- no longer legal to reference @MyVariable. SELECT BusinessEntityID, NationalIDNumber, JobTitle FROM HumanResources.Employee WHERE BusinessEntityID = @MyVariable; 

Переменные имеют локальную область видимости и доступны только внутри пакета или процедуры, где они объявлены. В следующем примере вложенная область видимости, созданная для выполнения процедуры sp_executesql, не имеет доступа к переменной, объявленной в более высокой области видимости, и возвращает ошибку:

DECLARE @MyVariable INT; SET @MyVariable = 1; EXECUTE sp_executesql N'SELECT @MyVariable'; -- this produces an error 

Присвоение значения переменной в языке Transact-SQL

При объявлении переменной присваивается значение NULL. Чтобы изменить значение переменной, применяется инструкция SET. Этот способ присвоения значений переменным является предпочтительным. Кроме того, переменной можно присвоить значение, указав ее в списке выбора инструкции SELECT.

Чтобы присвоить значение переменной при помощи инструкции SET, необходимо указать ее имя и присваиваемое значение. Этот способ присвоения значений переменным является предпочтительным. Например, следующий пакет объявляет две переменные, присваивает им значения и использует их в предложении WHERE инструкции SELECT :

USE AdventureWorks2022; GO -- Declare two variables. DECLARE @FirstNameVariable NVARCHAR(50), @PostalCodeVariable NVARCHAR(15); -- Set their values. SET @FirstNameVariable = N'Amy'; SET @PostalCodeVariable = N'BA5 3HX'; -- Use them in the WHERE clause of a SELECT statement. SELECT LastName, FirstName, JobTitle, City, StateProvinceName, CountryRegionName FROM HumanResources.vEmployee WHERE FirstName = @FirstNameVariable OR PostalCode = @PostalCodeVariable; GO 

Переменной можно присвоить значение, указав ее в списке выбора. Если список выбора ссылается на переменную, то ей должно быть присвоено скалярное значение, или инструкция SELECT должна возвращать только одну строку. Например:

USE AdventureWorks2022; GO DECLARE @EmpIDVariable INT; SELECT @EmpIDVariable = MAX(EmployeeID) FROM HumanResources.Employee; GO 

Когда при выполнении инструкции SELECT переменной присваивается несколько значений, сервер SQL Server не гарантирует порядок вычисления выражений. Обратите внимание, что этот эффект проявляется, только если инструкция присваивает значение переменной.

Если инструкция SELECT возвращает более одной строки и переменная ссылается на нескалярное выражение, ей присваивается значение, которое возвращается для выражения в последней строке результирующего набора. Например, в следующем пакете переменной @EmpIDVariable присваивается значение идентификатора BusinessEntityID последней возвращенной строки, равное 1:

USE AdventureWorks2022; GO DECLARE @EmpIDVariable INT; SELECT @EmpIDVariable = BusinessEntityID FROM HumanResources.Employee ORDER BY BusinessEntityID DESC; SELECT @EmpIDVariable; GO 

Как можно объявить переменную в SQL?

@Zumrat, Постарайтесь писать более развернутые вопросы. Поясните, в чем вы видите проблему, как ее воспроизвести и т. д.

3 дек 2014 в 8:21

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Если речь идет о запросе, то в начале добавляешь

DECLARE @value_name var 
Table.name = @value_name 

Где @value_name - это название переменной, var - тип переменной, Table.name - название столбца, из которого формируется твоя переменная.

Встраивание скалярных определяемых пользователем функций

В этой статье приводятся общие сведения о функции встраивания скалярных пользовательских функций, которая входит в состав набора функций интеллектуальной обработки запросов. Эта функция повышает производительность запросов, вызывающих скалярные определяемые пользователем функции в SQL Server (начиная с SQL Server 2019 (15.x)).

Скалярные пользовательские функции T-SQL

Определяемые пользователем функции ,реализованные в Transact-SQL и возвращающие одно значение данных, называются скалярными пользовательскими функциями T-SQL. Определяемые пользователем функции T-SQL — это элегантный способ повторного использования кода и модульности в запросах Transact-SQL. Некоторые вычисления (например, сложные бизнес-правила) проще выражать в императивной форме пользовательских функций. Такие функции позволяют конструировать комплексную логику, не имея опыта в написании сложных SQL-запросов. Дополнительные сведения о пользовательских функциях см. в разделе Создание определяемых пользователем функций (ядро СУБД).

Производительность скалярных пользовательских функций

Как правило, производительность скалярных пользовательских функций оказывается невысокой по указанным ниже причинам:

  • Итеративное вызов. Пользовательские функции вызываются итеративно — однократно в соответствующем кортеже. Постоянные переключения контекста при вызове функций требуют дополнительных ресурсов. Особенно это касается определяемых пользователем пользователем запросов Transact-SQL в их определении.
  • Отсутствие затрат. Во время оптимизации стоят только реляционные операторы, а скалярные операторы не являются. До внедрения скалярных определяемых пользователем операторов другие скалярные операторы обычно были дешевыми и не требовали затрат. Достаточно было учитывать небольшое увеличение загрузки ЦП. Ниже представлены сценарии, в которых фактические затраты значительны, но по-прежнему не принимаются во внимание в полной мере.
  • Интерпретируемая выполнение. Пользовательские функции оцениваются как пакеты инструкций, но инструкции выполняются поочередно. Каждая инструкция компилируется отдельно, а затем скомпилированный план кэшируется. Хотя такая стратегия кэширования позволяет избежать повторной компиляции и немного сэкономить время, каждая инструкция выполняется изолированно. Перекрестная оптимизация инструкций не производится.
  • Последовательное выполнение. SQL Server не разрешает параллелизм внутри запросов, вызывающих определяемые пользователем функции.

Автоматическое встраивание скалярных пользовательских функций

Цель функции встраивание скалярных UDF заключается в повышении производительности запросов, которые вызывают скалярные определяемые пользователем функции T-SQL, где выполнение UDF является основным узким местом.

Эта новая функция автоматически преобразует скалярные пользовательские функции в скалярные выражения или скалярные вложенные запросы, которые подставляются в вызывающий запрос вместо оператора пользовательской функции. Затем выражения и вложенные запросы оптимизируются. В итоге в плане запроса не будет оператора пользовательской функции, но логика функции сохраняется в виде представлений или встроенных функций с табличными значениями.

Пример 1. Скалярный UDF с одним оператором

Обратите внимание на следующий запрос.

SELECT L_SHIPDATE, O_SHIPPRIORITY, SUM (L_EXTENDEDPRICE *(1 - L_DISCOUNT)) FROM LINEITEM INNER JOIN ORDERS ON O_ORDERKEY = L_ORDERKEY GROUP BY L_SHIPDATE, O_SHIPPRIORITY ORDER BY L_SHIPDATE; 

Он вычисляет сумму цен на позиции с учетом скидок и выводит результаты с группировкой по дате и приоритету отгрузки. Выражение L_EXTENDEDPRICE *(1 - L_DISCOUNT) служит для расчета цены позиции со скидкой. Выделение таких формул в отдельные функции позволяет повысить модульность кода и упрощает его повторное использование.

CREATE FUNCTION dbo.discount_price(@price DECIMAL(12,2), @discount DECIMAL(12,2)) RETURNS DECIMAL (12,2) AS BEGIN RETURN @price * (1 - @discount); END 

Теперь запрос можно изменить так, чтобы в нем вызывалась эта пользовательская функция.

SELECT L_SHIPDATE, O_SHIPPRIORITY, SUM (dbo.discount_price(L_EXTENDEDPRICE, L_DISCOUNT)) FROM LINEITEM INNER JOIN ORDERS ON O_ORDERKEY = L_ORDERKEY GROUP BY L_SHIPDATE, O_SHIPPRIORITY ORDER BY L_SHIPDATE 

По изложенным выше причинам запрос с пользовательской функцией выполняется медленно. Теперь при использовании скалярного UDF Inlining скалярное выражение в тексте UDF заменено непосредственно в запросе. Результаты выполнения этого запроса показаны в приведенной ниже таблице.

Запрос: Запрос без пользовательской функции Запрос с пользовательской функцией (без встраивания) Запрос с скалярным интерфейсом UDF встраивание
Время выполнения: 1,6 секунды 29 минут 11 секунд 1,6 секунды

Эти показатели получены для базы данных CCI размером 10 ГБ (использующей схему TPC-H), которая размещена на компьютере с двумя процессорами (12 ядер), 96 ГБ ОЗУ и дисками SSD. В них было учтено время компиляции и выполнения с холодным кэшем процедур и буферным пулом. Использовалась конфигурация по умолчанию. Другие индексы не создавались.

Пример 2. Скалярная UDF с несколькими операторами

Скалярные пользовательские функции, которые реализуются с помощью нескольких инструкций T-SQL, таких как присвоение значений переменным и условное ветвление, также могут встраиваться. Рассмотрим приведенную ниже скалярную пользовательскую функцию, которая на основе ключа клиента определяет для него категорию обслуживания. Для этого она сначала вычисляет общую стоимость всех заказов, размещенных клиентом, с помощью SQL-запроса. Затем на основе общей стоимости определяется категория посредством логики IF (. ) ELSE .

CREATE OR ALTER FUNCTION dbo.customer_category(@ckey INT) RETURNS CHAR(10) AS BEGIN DECLARE @total_price DECIMAL(18,2); DECLARE @category CHAR(10); SELECT @total_price = SUM(O_TOTALPRICE) FROM ORDERS WHERE O_CUSTKEY = @ckey; IF @total_price < 500000 SET @category = 'REGULAR'; ELSE IF @total_price < 1000000 SET @category = 'GOLD'; ELSE SET @category = 'PLATINUM'; RETURN @category; END 

Теперь рассмотрим запрос, вызывающий эту пользовательскую функцию.

SELECT C_NAME, dbo.customer_category(C_CUSTKEY) FROM CUSTOMER; 

План выполнения для этого запроса в SQL Server 2017 (14.x) (уровень совместимости 140 и более ранние версии) выглядит следующим образом:

Query Plan without inlining.

Как видно из плана, в SQL Server применяется простая стратегия: для каждого кортежа в таблице CUSTOMER вызывается пользовательская функция и выводятся результаты. Такой подход примитивен и неэффективен. Благодаря встраиванию подобные пользовательские функции преобразуются в эквивалентные скалярные вложенные запросы, которые подставляются в вызывающий запрос вместо пользовательской функции.

Для этого же запроса план со встроенной пользовательской функцией выглядит так:

Query Plan with inlining.

Как уже говорилось, в плане запроса теперь нет оператора пользовательской функции, но логика функции сохраняется в виде представлений или встроенных функций с табличными значениями. Изучив план, можно заметить следующее.

  • Сервер SQL Server определил наличие неявного соединения между CUSTOMER и ORDERS и сделал его явным с помощью оператора соединения.
  • Сервер SQL Server определил наличие неявного предложения GROUP BY O_CUSTKEY on ORDERS и реализовал его с помощью IndexSpool и StreamAggregate.
  • Параллелизм теперь применяется для всех операторов.

В зависимости от сложности логики в пользовательской функции план запроса также может быть больше и сложнее. Как видно, операции внутри UDF теперь непрозрачны, поэтому оптимизатор запросов может стоить и оптимизировать эти операции. Кроме того, так как в плане больше нет пользовательской функции, полностью устраняются накладные расходы, связанные с ее итеративными вызовами.

Встроенные скалярные требования К UDF

Скалярный UDF T-SQL может быть вложен, если все из следующих условий имеют значение true:

  • UDF записывается с помощью следующих конструкций:
    • DECLARE , SET : объявление переменных и присвоение им значений;
    • SELECT : SQL-запрос с однократными назначениями переменных 1 .
    • IF / ELSE : ветвление с произвольными уровнями вложенности;
    • RETURN : одна инструкция return или несколько; Начиная с SQL Server 2019 (15.x) CU5, UDF может содержать только одну инструкцию RETURN для встраивание 6 .
    • UDF : вызовы вложенной или рекурсивной функции 2 .
    • прочее: реляционные операции, такие как EXISTS и IS NULL .

    1 SELECT с накоплением или агрегированием переменных не поддерживается для встраивание (например SELECT @val += col1 FROM table1 ).

    2 Рекурсивные пользовательские функции встраиваются только до определенной глубины.

    3 Зависимыми от времени являются такие встроенные функции, результаты которых зависят от текущего системного времени. Примером встроенной функции с побочными эффектами служит функция, которая может изменять некоторое внутреннее глобальное состояние. Такие функции возвращают разные результаты при каждом вызове на основе внутреннего состояния.

    Ограничение 4 , добавленное в SQL Server 2019 (15.x) CU2

    Ограничение 5 , добавленное в ПАКЕТ обновления 4 (CU4) SQL Server 2019 (15.x)

    Ограничение 6 , добавленное в ПАКЕТ ОБНОВЛЕНИЯ 5 (CU5) SQL Server 2019 (15.x)

    Ограничение 7 , добавленное в SQL Server 2019 (15.x) CU6

    Ограничение 8 , добавленное в SQL Server 2019 (15.x) CU11

    Сведения о последних исправлениях и изменениях встраивание скалярных UDF T-SQL см. в статье базы знаний: FIX: Скалярная настройка UDF в SQL Server 2019.

    Проверьте, можно ли встраить UDF

    Для каждой скалярной пользовательской функции T-SQL представление каталога sys.sql_modules содержит свойство is_inlineable , которое указывает, является ли эта функция встраиваемой.

    Свойство is_inlineable является производным от конструкций в определении пользовательской функции. Он не проверка, является ли UDF фактически встроенным во время компиляции. Дополнительные сведения см. в разделе Условия встраивания.

    Значение 1 указывает, что она встраиваемая, а значение 0 — не встраиваемая. Это свойство также имеет значение 1 для всех встроенных функций с табличными значениями. Для остальных модулей значение будет равно 0.

    Если скалярный UDF является встроенным, он не означает, что он всегда будет вложен. Целесообразность встраивания определяется в SQL Server для каждого конкретного запроса и каждой функции. Ниже приведены примеры ситуаций, в которых невозможно встраивание пользовательских функций:

    • Если определение UDF выполняется в тысячах строк кода, SQL Server может не встраивать его.
    • Вызов UDF в предложении GROUP BY не будет вложен. Решение принимается при компиляции запроса, ссылающегося на скалярную пользовательскую функцию.
    • Пользовательская функция подписана с помощью сертификата. Так как подписи можно добавлять и удалять после создания UDF, решение о том, следует ли встраивать или не выполнять при компиляции скалярного UDF запроса. Например, большинство системных функций подписано с помощью сертификатов. Для определения подписанных объектов можно использовать sys.crypt_properties.

    SELECT * FROM sys.crypt_properties AS cp INNER JOIN sys.objects AS o ON cp.major_id = o.object_id; 

    Проверьте, произошла ли встраивание или нет

    Если все предварительные условия соблюдены и сервер SQL Server решает выполнить встраивание, пользовательская функция преобразуется в реляционное выражение. Из плана запроса легко выяснить, произошла ли встраивание.

    • Xml-файл плана не будет иметь xml-узел для UDF, который был успешно вложен.
    • Создается ряд событий XEvent.

    Включение встраивание скалярных UDF

    Рабочие нагрузки можно автоматически сделать подходящими для встраивания скалярных пользовательских функций, включив для базы данных уровень совместимости 150. Это можно сделать с помощью Transact-SQL. Например:

    ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150; 

    Для использования этой функции других изменений в пользовательские функции или запросы вносить не требуется.

    Отключение встраивания скалярных UDF без изменения уровня совместимости

    Скалярная настройка UDF может быть отключена в базе данных, инструкции или UDF область при сохранении уровня совместимости базы данных 150 и выше. Чтобы отключить встраивание скалярных UDF в базу данных область, выполните следующую инструкцию в контексте применимой базы данных:

    ALTER DATABASE SCOPED CONFIGURATION SET TSQL_SCALAR_UDF_INLINING = OFF; 

    Чтобы снова включить встраивание для базы данных, выполните следующую инструкцию в контексте соответствующей базы данных:

    ALTER DATABASE SCOPED CONFIGURATION SET TSQL_SCALAR_UDF_INLINING = ON; 

    Когда этот параметр включен, он имеет соответствующее состояние в представлении sys.database_scoped_configurations . Вы также можете отключить встраивание скалярных пользовательских функций для определенного запроса, назначив DISABLE_TSQL_SCALAR_UDF_INLINING в качестве указания запроса USE HINT .

    Указание запроса USE HINT имеет приоритет над конфигурацией, областью действия которой является база данных, или уровнем совместимости.

    SELECT L_SHIPDATE, O_SHIPPRIORITY, SUM (dbo.discount_price(L_EXTENDEDPRICE, L_DISCOUNT)) FROM LINEITEM INNER JOIN ORDERS ON O_ORDERKEY = L_ORDERKEY GROUP BY L_SHIPDATE, O_SHIPPRIORITY ORDER BY L_SHIPDATE OPTION (USE HINT('DISABLE_TSQL_SCALAR_UDF_INLINING')); 

    Встраивание скалярных пользовательских функций можно также отключить для определенной пользовательской функции с помощью предложения INLINE в инструкции CREATE FUNCTION или ALTER FUNCTION . Например:

    CREATE OR ALTER FUNCTION dbo.discount_price(@price DECIMAL(12,2), @discount DECIMAL(12,2)) RETURNS DECIMAL (12,2) WITH INLINE = OFF AS BEGIN RETURN @price * (1 - @discount); END; 

    После выполнения этой инструкции данная пользовательская функция никогда не будет встраиваться в вызывающие ее запросы. Чтобы повторно включить встраивание для пользовательской функции, выполните следующую инструкцию.

    CREATE OR ALTER FUNCTION dbo.discount_price(@price DECIMAL(12,2), @discount DECIMAL(12,2)) RETURNS DECIMAL (12,2) WITH INLINE = ON AS BEGIN RETURN @price * (1 - @discount); END 

    Предложение INLINE не является обязательным. Если INLINE предложение не указано, оно автоматически устанавливается ON / OFF в зависимости от того, можно ли вставить UDF. Если указано INLINE = ON , но функция не подходит для встраивания, происходит ошибка.

    Важные примечания

    Как описано в этой статье, Скалярная UDF Inlining преобразует запрос с скалярными определяемых пользователем УДФ в запрос с эквивалентным скалярным вложенным запросом. Из-за этого пользователи могут заметить отличия в поведении в описанных ниже ситуациях.

    1. В результате встраивания хэш запроса для того же текста запроса будет другим.
    2. В инструкциях внутри пользовательской функции могут появляться предупреждения (например, о делении на ноль и другие), которые были скрыты до встраивания.
    3. Указания соединения на уровне запроса могут стать недействительными, так как в результате встраивания могут появиться новые соединения. Вместо этого следует использовать локальные указания соединения.
    4. Представления, ссылающиеся на встроенные скалярные определяемые пользователем функции, не могут быть индексированы. Чтобы создать индекс для таких представлений, отключите встраивание для соответствующих пользовательских функций.
    5. При встраивании пользовательских функций может изменяться поведение динамического маскирования данных. В некоторых ситуациях (в зависимости от логики в UDF) встраивание может быть более консервативным в отношении маскирования выходных столбцов. В сценариях, где столбцы, на которые ссылаются в UDF, не являются выходными столбцами, они не будут маскированы.
    6. Если пользовательская функция ссылается на встроенные функции, такие как SCOPE_IDENTITY() , @@ROWCOUNT или @@ERROR , значение, возвращаемое встроенной функцией, меняется после встраивания пользовательской функции. Связано это с тем, что встраивание меняет область инструкций внутри пользовательской функции. Начиная с SQL Server 2019 (15.x) CU2, встраивание блокируется, если UDF ссылается на определенные встроенные функции (например @@ROWCOUNT ).
    7. Если переменная назначена результатом встроенной UDF, а также используется в качестве index_column_name в подсказке запроса FORCESEEK, это приведет к ошибке Msg 8622, указывающей, что обработчик запросов не может создать план запроса из-за указаний, определенных в запросе.

    См. также

    • Создание пользовательских функций (ядро СУБД)
    • Центр производительности для базы данных SQL Azure и ядра СУБД SQL Server
    • Руководство по архитектуре обработки запросов
    • Справочник по логическим и физическим операторам Showplan
    • Соединения
    • Демонстрация интеллектуальной обработки запросов
    • ИСПРАВЛЕНИЕ. Проблемы с встраиванием скалярных UDF в SQL Server 2019

    Обратная связь

    Были ли сведения на этой странице полезными?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *