2013-12-06 3 views
0

В моем сценарии я есть несколько операторов выбора и утверждения обновлений, в качестве примераобъявлять переменные в SQL 2005

SELECT * from TABLE1 
WHERE userID= 'US001' 

UPDATE TABLE2 
SET value= 'months' 
WHERE userID='US001' 

заявления, идущие так далее, так что в этом я должен скопировать и вставить идентификатор_пользователя к каждому заявлению. я хочу объявить переменную и присвоить USERID передать его, поэтому мне не нужно, чтобы добавить номер USERID к каждому запросу и мне нужно выполнить

я попробовал этот

Delcare @theID userID 
SET userID ='us001' 

но Бесполезный «т работать его

пожалуйста, дайте мне знать .. спасибо

ответ

1
DECLARE @theID varchar(10); 
    SET @theID = 'us001'; 

В вашем заявлении вы объявляете переменную как userID, который не является допустимым типом данных.

2

Вам необходимо объявить тип и назначить его. В Sql Server, переменные с префиксом @, например, так:

DECLARE @theID NVARCHAR(20); 
SET @theID ='us001'; 

UPDATE TABLE2 SET value= 'months' WHERE [email protected]; 
+0

я сделал, как указано для оператора выбора, но дата показывает запрос не работают идеально – user3073987

1

В дополнение к предыдущим ответам, в SQL Server 2008 и выше, вы также можете объявить и установить переменную в одной строке.

DECLARE @UserID NVARCHAR(20) = 'us001'; 
+2

В Sql 2012, да, но не в 2005 году. – StuartLC

+0

Это правильно доступно в 'SQL Server 2008' + – Milen

+0

Благодарим вас за комментарий, добавили его в текст. –

0

Это то, что работает для меня под SQL2005 в хранимой процедуре:

DECLARE @name varchar(100) 
    SELECT @name = 'Robin' 

    // and this should be do the update 
    SET userID = @name 

    // or in you query it should be 
    WHERE userID = @name 
Смежные вопросы