2009-11-15 2 views
0

У меня есть запрос SQL в ASP.NETasp.net помощи SQL-запрос

SqlCommand QueidCmd = new SqlCommand("select scope_identity() from table1", conn); 

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

ответ

2

Во-первых, не ВЫБРАТЬ SCOPE_IDENTITY() из таблицы; это сделает не то.

Ключом к ответу на ваш вопрос является то, что вы можете объединить несколько команд/запросов в один оператор для SqlCommand, разделив их на точки с запятой. Например:

string sql = "DECLARE @scope INT;SET @scope = SCOPE_IDENTITY();UPDATE MyTable SET Val = @scope"; 
SqlCommand cmd = new SqlCommand(sql); 
cmd.ExecuteNonQuery(); 

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

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

+0

эй, спасибо за ур ответ, который был действительно полезен .. – anay

2

Вы можете сделать это в один SQL запрос:

DECLARE @myVariable YOUR_TYPE; 
SELECT @myVariable = SCOPE_IDENTITY() FROM table1; 
UPDATE table2 SET something = @myVariable; 
+0

да .. но это делается на сервере sql. Я хочу, чтобы это было сделано в asp.net. – anay

1

Использование:

object retVal = QueidCmd.ExecuteScalar(); 
int pk = Convert.ToInt32(retVal); // use this in your next insert
Смежные вопросы