2016-09-13 1 views
0

я закодированы значение, которое использовалось во многих stored procedures, так, чтобы создать глобальную переменную (на уровне базы данных) и использовать его во всех stored procedure, если изменения снова приходит только тогда необходимо изменить значение этой переменной будет влиять на всю логику хранимой процедуры. по глобальной переменной i означает: @@ Ошибка, @@ ROWCOUNT или т. Д.КАК ЗАКЛЮЧИТЬ ГЛОБАЛЬНУЮ переменную в SQL Server?

, пожалуйста, предложите, если любой другой способ.

+0

Невозможно объявить глобальную переменную в sql-сервере – Sami

+0

Что вы пытаетесь сделать? «Глобальные переменные» не имеют значения для базы данных. Вы можете сохранить конфигурацию, но было бы очень странно, если бы поведение хранимой процедуры автоматически изменялось при изменении конфигурации. Лучше передать такую ​​конфигурацию, как параметры –

+0

Даже если вы считаете обратное - вам не нужны глобальные переменные. Они злы, они могут убить вас :) –

ответ

3

Вы можете создать таблицу и сохранить там ценности. Тогда любой SP, нуждающийся в значении, может запросить эту таблицу. Обычно я рекомендую фиксировать одну строку и несколько столбцов (так что каждый столбец, представляющий «глобальную переменную», может иметь соответствующий тип данных).

E.g.

CREATE TABLE Globals (
    X char(1) not null, 
    GlobalVar1 varchar(250) not null, 
    GlobalVar2 int not null, 
    constraint PK_Globals PRIMARY KEY (X), 
    constraint CK_Globals_Single CHECK (X='X') 
) 

А затем вставьте строку:

INSERT INTO Globals (X,GlobalVar1,GlobalVar2) 
VALUES ('X','[email protected]',32) 

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

+1

Или используйте свойства расширителя. В зависимости от того, что OP хочет сделать - было бы очень странно, если поведение хранимой процедуры автоматически изменилось. Лучше использовать параметры хранимой процедуры для передачи такой конфигурации, независимо от того, где она хранится. –

+0

@PanagiotisKanavos. Я использовал это ранее для данных стиля «config» - там, где нам нужно несколько магических чисел или значений, которые требуется нескольким хранимым процессам заботиться. Это не единственный вариант, но он может хорошо работать для таких данных, где, возможно, его нужно менять несколько раз в год. –

+0

Damien_The_Unbeliever, как вы это сделали, не могли бы вы поделиться. , мы имеем ту же ситуацию, когда изменение произошло через год. – greesh