Общий выбор хранимой процедуры - PullRequest
3 голосов
/ 31 мая 2011

Я хочу создать хранимую процедуру на основе следующего способа:

ALTER PROCEDURE spGetLastId
(
@table_name varchar(100)
)
AS
BEGIN
    DECLARE @DBSql varchar(2000)
    SET @DBSql = 'SELECT MAX(id) as ''LastId'' FROM ' + @table_name
    EXEC sp_executesql @DBSql
END 

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

Спасибо и С уважением

Ответы [ 3 ]

3 голосов
/ 31 мая 2011

Измените @DBSql с varchar на nvarchar, и это сработает, или посмотрите на встроенную IDENT_CURRENT().

1 голос
/ 31 мая 2011

Не уверен, что это то, что вы ищете, но если вы вставляете записи, а затем извлекаете последнее сгенерированное значение идентификатора, вы можете использовать SELECT SCOPE_IDENTITY () после вставки ...

INSERT INTO MyTable (col1, col2) 
VALUES (val1, val2);
SELECT SCOPE_IDENTITY()

В противном случае ваша процедура должна работать так, как вам нужно, хотя вы должны изменить тип данных @DbSql на nvarchar, а не на varchar.

0 голосов
/ 31 мая 2011

Единственный известный мне вариант использования для этой работы - это создание собственных полей IDENTITY.

Если вы это делаете, остановите и используйте IDENTITY, предоставляемый SQL Server.

Если вы хотите вставить свои собственные значения в столбец IDENTITY, читаемый как SET IDENTITY_INSERT TABLENAME ON ;

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