Пример выборки диапазона дат в 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 Date select

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 TSQL SQL

MSSQL - Выбор процедур из метаданных по содержимому (пример)

MS SQL - по необходимости

Пример вывода всех процедур которые содержат текст «ChequeHeads» (проще говоря в которых есть обращения к данной таблице):

SELECT name
FROM   sys.procedures
WHERE  Object_definition(object_id) LIKE '%ChequeHeads%'

Комментировать...

MSSQL Метаданные SQL

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 SEQUENCE SQL

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 Procedure Table TSQL SQL

Правильное выполнение транзакции в 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 Transaction TSQL

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 Transaction Try Catch TSQL SQL

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.

Комментировать...

SPT_VALUES MSSQL TSQL

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.

Комментировать...

MSSQL TSQL Оконные функции partition by sql

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. На больших объёмах, даже с учетом самой оптимальной индексации, данный фильтр является довольно ресурсоемким.

Комментировать...

MSSQL TSQL OFFSET FETCH SELECT Базы данных

Работа с Postgresql в C#

Не так давно занялся разработкой приложения на C# работающего на базе PostreSQL, появилась информаци (читать далее...)

669  
Работа с XML в Oracle PL/SQL (Часть 1)

В этой публикации я приведу основные способы работы с XML в Oracle, которые сам использую. Здесь буд (читать далее...)

632  
OpenXML - Пример создания Excel файла на C#

В данной публикации приведен пример генерации Excel файла при помощи библиотеки OpenXML. Отличие это (читать далее...)

619  
Работа со строками в Oracle (PL/SQL)

Основные способы обработки строковых значений в Oracle. В этой публикации я приведу основные функции (читать далее...)

439  
Курсоры в MSSQL - перебор выборки в цикле.

Команды манипулирования данными SELECT, UPDATE, DELETE работают сразу с группами строк. Эти группы, (читать далее...)

369  
Работа с MySQL в C#

Надеюсь данная публикация не даст читателям повторить мои ошибки и поможет сделать изначально правил (читать далее...)

361  
Поиск и регулярные выражения в MySQL

СУБД MySQL имеет различные инструменты для осуществления поиска, среди которых оператор LIKE, осущес (читать далее...)

358  
Передача параметров между формами в C#

Часто возникает необходимость передать определённые параметры между формами в одном приложении, напр (читать далее...)

343  
Руководство пользователя для терминала сбора данных SEUIC 7P

Поскольку на просторах Российского интернета информации по китайским терминалам сбора данных Seuic A (читать далее...)

286  
Пример работы с SerialPort в C#

Простой пример работы чтения поступающих данных из COM порта с использованием SerialPort на C#. Всё (читать далее...)

281