Пример выборки диапазона дат в MSSQL
MS SQL - по необходимостиПример выборки диапазона дат:
WITH q AS
(
SELECT 1 AS num
UNION ALL
SELECT num + 1
FROM q
WHERE num < 10
)
SELECT DATEADD(DAY,0,cast(cast(DATEADD(DAY,-num,SYSDATETIME()) as date) as datetime))
FROM q
Читаль далее...
MSSQL - Как правильно отловить и вернуть ошибку в запросе
MS SQL - по необходимостиПример, как правильно отлавливать ошибку в MSSQL
BEGIN TRY
-- Некий код который может вызвать ошибку.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
Оп! Комментировать...
MSSQL - Выбор процедур из метаданных по содержимому (пример)
MS SQL - по необходимостиПример вывода всех процедур которые содержат текст «ChequeHeads» (проще говоря в которых есть обращения к данной таблице):
SELECT name
FROM sys.procedures
WHERE Object_definition(object_id) LIKE '%ChequeHeads%'
Комментировать...
MSSQL SEQUENCE - Пример создания сиквенса ( последовательности ) и его использования
MS SQL - по необходимостиПример создания сиквенса (последовательности) в MSSQL:
CREATE SEQUENCE [dbo].[CardNum]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
После выполнения данного запроса в базе данных будет создан сиквенс CardNum типа BIGINT, который будет начинаться с 1.
Теперь чтобы получить новое значение сиквенса:
set @card_num = NEXT VALUE FOR [dbo].[CardNum];
Чтобы просто посмотреть все текущие свойства сиквенса:
SELECT * FROM sys.sequences WHERE name = 'CardNum' ;
Вот и всё. Комментировать...
MSSQL - передача таблицы или списка значений в процедуру ( C# .NET )
MS SQL - по необходимостиЧасто бывает необходимость передать за один раз некоторый набор данных в процедуру, в этой публикации будет приведен пример как это сделать на языке C# для базы данных MSSQL.
Использовать будем обычный способ вызова процедуры без каких либо фреймворков.
Для начала создадим тестовую таблицу в базе данных:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Bottles](
[Uid] [uniqueidentifier] NOT NULL,
[Name] [varchar](50) NULL,
[Color] [varchar](50) NULL
) ON [PRIMARY]
GO
В данной таблице будем размещать бутылки разных названий и цветов (просто для теста).Читаль далее...
Правильное выполнение транзакции в MSSQL
MS SQL - по необходимостиДва варианта выполнения транзакции в MSSQL, для которых при возникновении ошибки транзакция отменяется.
Первый вариант:
BEGIN TRY
BEGIN TRAN
UPDATE 1
UPDATE 2 --Ошибка
UPDATE 3
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
Второй вариант:
SET XACT_ABORT ON
BEGIN TRAN
UPDATE 1
UPDATE 2 --Ошибка
UPDATE 3
COMMIT TRAN
Оба варианта сделают одно и то-же при возникновении ошибки на втором шаге, отменят всю транзакцию включая первый шаг. Комментировать...
MSSQL - Try Catch Transaction (Отменяем транзакцию с ошибкой корректно)
MS SQL - по необходимостиНиже приведен пример корректного отмена транзакции при ошибке:
update Params set Value=168 where Param = 'SessionHoursLimit'
PRINT @@TRANCOUNT
BEGIN TRY
BEGIN TRAN
PRINT @@TRANCOUNT
update Params set Value=167 where Param = 'SessionHoursLimit'
select 1/0 -- Если закомментировать эту строку то предыдущая строка выполнится
COMMIT TRAN
END TRY
BEGIN CATCH
if @@TRANCOUNT>0
ROLLBACK TRAN
END CATCH
PRINT @@TRANCOUNT
select * from Params
Если закомментировать строку с ошибочным оператором SELECT 1/0 то предшествующая строка будет выполнена и транзакция успешно завершится, если оставить строку SELECT 1/0 то транзакция отменится полностью, и параметр Value останется таким, каким он был установлен в первой строке скрипта до начала транзакции. Комментировать...
MSSQL - Выбор N пронумерованных виртуальных записей записей при помощи системной таблицы SPT_VALUES
MS SQL - по необходимостиДанный пример может быть полезен, когда надо выбрать некоторое количество пронумерованных записей из неоткуда допустим во временную таблицу или табличную переменную.
Пример:
select number as Section from master..spt_values where type='L' and number>0 and number<=100
Пример выводит 100 строк таблицы с значениями от 1 до 100 и единственным столбцом Section. Комментировать...
MSSQL Оконные функции - Пример ROWNUMBER OVER PARTITION BY
MS SQL - по необходимостиОконные функции — это такие функции которые на основе окна (набора записей) вычисляют скалярное (одиночное) значение. Это значение определяется с помощью инструкции OVER.
Пример:
select regioncode, aolevel, offname,
row_number() over(partition by regioncode order by aolevel, offname) as rownum
from s_adr_fias
order by regioncode, aolevel, offname;
В данном примере будет сделана выборка в которой для каждого regioncode в поле rownum будет нумерация отсортированных значений aolevel, offname. Комментировать...
OFFSET FETCH пример применения в TSQL
MS SQL - по необходимостиФильтр OFFSET FETCH в языке TSQL интересен тем что в отличии от фильтра TOP позволяет пропускать заданное количество строк ROWS.
Пример:
select regioncode, aolevel, offname from s_adr_fias
order by regioncode, aolevel, offname
offset 100 rows fetch next 50 rows only;
Данный пример демонстрирует выборку из набора отсортированного по условию ORDER BY (по полям regioncode, aolevel, offname) 50 строк данных пропустив первые 100 строк.
!!! Сначала выполняется именно сортировка, и только затем, из отсортированного набора данных берётся необходимый диапазон.
P.S. На больших объёмах, даже с учетом самой оптимальной индексации, данный фильтр является довольно ресурсоемким. Комментировать...
Работа с Postgresql в C#
Не так давно занялся разработкой приложения на C# работающего на базе PostreSQL, появилась информаци (читать далее...)
1098Работа с MySQL в C#
Надеюсь данная публикация не даст читателям повторить мои ошибки и поможет сделать изначально правил (читать далее...)
648Работа со строками в Oracle (PL/SQL)
Основные способы обработки строковых значений в Oracle. В этой публикации я приведу основные функции (читать далее...)
628Поиск и регулярные выражения в MySQL
СУБД MySQL имеет различные инструменты для осуществления поиска, среди которых оператор LIKE, осущес (читать далее...)
471Передача параметров между формами в C#
Часто возникает необходимость передать определённые параметры между формами в одном приложении, напр (читать далее...)
455OpenXML - Пример создания Excel файла на C#
В данной публикации приведен пример генерации Excel файла при помощи библиотеки OpenXML. Отличие это (читать далее...)
438Установка русской кодировки на уже созданную базу данных (смена COLLATION)
Полезный пример изменения кодировки (COLLATION) на уже созданной базе данных. В данном примере устан (читать далее...)
412Работа с XML в Oracle PL/SQL (Часть 1)
В этой публикации я приведу основные способы работы с XML в Oracle, которые сам использую. Здесь буд (читать далее...)
394Курсоры в MSSQL - перебор выборки в цикле.
Команды манипулирования данными SELECT, UPDATE, DELETE работают сразу с группами строк. Эти группы, (читать далее...)
347Функция Oracle TO_DATE (PL/SQL)
Функция TO_DATE — преобразует строку в переменную времени DATE. Синтаксис: TO_DATE(исходная_строка, (читать далее...)
321