значение столбца пользователя по умолчанию в хранимой процедуре INSERT - PullRequest
0 голосов
/ 01 октября 2010

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

СИТУАЦИОННЫЙ СТОЛ:

Column 1: int
Column 2: string
Column 3: int default -1

Ситуационная процедура

INSERT INTO TABLE
  (Column 1, Column 2, Column 3)
VALUES
  (?, ?, ?)

СИТУАЦИОННЫЙ КОД ASP.NET

create paramter (Column 1, 12)
if (x = 0)
 {create parameter (Column 2, "test")}
else
 {
   create parameter (Column 3, 24)
   create parameter (Column 2, DBNull.Value)
 }

Спасибо за вашу помощь

Ответы [ 4 ]

1 голос
/ 01 октября 2010

Вы можете использовать ключевое слово default.

CREATE TABLE #T
(
i int default 12,
j int
)

INSERT INTO #T (i,j)  VALUES (DEFAULT, 10)

SELECT i,j FROM #T
DROP TABLE #T
1 голос
/ 01 октября 2010

Как насчет

if (somecondition) { // User another value for c2
   query = "insert into table_name (c1, c2) values (1, 2)";
} else { // User the column c2 default value
   query = "insert into table_name (c1) values (1)";
}
1 голос
/ 01 октября 2010

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

Например, в вашей процедуре:

IF condition
  INSERT INTO Y (X) VALUES(1); -- will use defaults
ELSE
  INSERT INTO Y (W, X) VALUES(1, 2) -- won't use default for W
0 голосов
/ 01 октября 2010

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

@field_with_def_value int = -1,
etc...

Если вы хотите, вы можете установить это значение по умолчанию в поле по умолчанию и покончить с этим.Но, возможно, безопаснее проверить это значение по умолчанию в sproc, а затем условно вызвать INSERT, который выполняет вставку со значением этого поля или без него.Таким образом, если значение по умолчанию изменено, вам не нужно менять приложение или код sproc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...