2017-03-30 58 views
1

我可能失去了一些東西很容易在這裏,有人比較新的SQL,我想下面的查詢:SQL變量沒有得到設置

DECLARE @uidd VARCHAR 
SELECT @uidd = UID 
FROM PRODUCTOBJECT WHERE EMAIL='[email protected]'; 
SELECT ProductID FROM PRODUCTUIDMAPPING WHERE UID= @uidd; 

而且它返回零行。令人費解的是,如果不使用變量並分別運行兩個選擇,我確實會得到正確的行。

SELECT UID FROM TABLEA WHERE EMAIL='[email protected]'; 

返回UID,然後

SELECT ProductID FROM TABLEB WHERE UID='123456'; 

將返回的ProductID值,其中 '123456' 將是第一個查詢返回的值。

問題是,當它們結合在一起時,出於某種原因使用變量似乎沒有設置@uidd。任何理由?

我SQL Server上運行這個2008年

回答

0

據推測,uuid比一個字符長。 千萬不要在SQL Server中使用字符類型而不需要長度。默認值因上下文而異,可能不正確。

所以,這應該工作:

DECLARE @uidd VARCHAR(255); 

SELECT @uidd = UID 
FROM PRODUCTOBJECT 
WHERE EMAIL='[email protected]'; 

SELECT ProductID 
FROM PRODUCTUIDMAPPING 
WHERE UID= @uidd; 
+0

戈登,感謝你的超快速的回覆,你是對的。在接下來的12分鐘內,我可以接受答案:) – fobius