Получить версию Oracle
Получить версию Oracle
SELECT * FROM V$VERSION
Получить версию Oracle
SELECT * FROM V$VERSION
Get catalog folder in Oracle
SELECT * FROM V$DIAG_INFO
Примр создания последовательности SEQUENCE в MSSQL:
CREATE SEQUENCE [dbo].[CardNum]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
Этот сккрипт создаст последовательность SEQUENCE CardNum с типом BIGINT и стартовым значением 1 в текущей базе данных.
Чтобы получить новое значение value из последовательности SEQUENCE:
set @card_num = NEXT VALUE FOR [dbo].[CardNum];
Чтобы получить текущие свойства properties для последовательности SEQUENCE:
SELECT * FROM sys.sequences WHERE name = 'CardNum' ;
Перезапуск (Restart) MSSQL Server на Linux (Ubuntu).
Microsoft рекомендует перезапускать сервер так:
-- Получить состояние сервиса
sudo systemctl status mssql-server
-- Остановить сервис
sudo systemctl stop mssql-server
-- Запустить сервис
sudo systemctl start mssql-server
-- Перезапустить сервис
sudo systemctl restart mssql-server
Для Ubuntu я лично предпочитаю такой способ:
service mssql-server status
service mssql-server stop
service mssql-server start
service mssql-server restart
Чтобы получить SESSION ID:
select @@spid
Чотбы получить TRANSACTION ID:
select CURRENT_TRANSACTION_ID()
"OFFSET FETCH" это фильтр который позволяет пропустить некоторое количество первых строк в выборке.
Например:
select field1, field2, field3
from table1
order by field1, field2
offset 100 rows fetch next 50 rows only;
Этот пример вернет строки с 101 по 150, из всех строк отсортированных по field1 и field2.
! Сначала будет произведена сортировка, затем возврат 50 строк.
! Для больших объемов данных этот способ требует много ресурсов, поэтому использовать лучше на минимизированных выборках.
Два способа выполнения транзакций в MSSQL, с отменой по ошибке.
Первый способ:
BEGIN TRY
BEGIN TRAN
UPDATE 1
UPDATE 2 --Error
UPDATE 3
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH
Пример поиска процедуры по тексту который она содержит
SELECT name
FROM sys.procedures
WHERE Object_definition(object_id) LIKE '%некоторый_текст%'
Этот скрипт вернет названия всех процедур которые содержат в текст: "некоторый_текст"
Пример выбора диапазона дат:
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
Пример обновления данных в одной таблице с одновременным сопоставлением и проверкой условия по второй таблице при помощи JOIN:
update cc
set cc.ActivateState=2
from ClientsCards cc
left join ClientsCardsHeads cch
on cch.CardUid=cc.Uid
where cc.ActivateState=0 and cch.State=3
ClientsCards cc - Первая таблица в которой производится изменение.
ClientsCardsHeads cch - Вторая таблица с данными которой производится сверка.