2016-03-28 35 views
0

değişken tablosundan 2 değişkeni 1 değişkene ayarlayın. Bu kodların neyin yanlış olduğunu birileri kontrol edebilir mi? Referans için diğer soruları kontrol ediyorum ama hala çalışmıyor.SQL Server:

declare @sourceTable varchar(500) 
declare @year varchar(22) 
declare @month varchar(3) 
declare @test varchar(12) 
declare @result varchar(8) 
declare @index int 

declare @string varchar(15) 
set @string = (SELECT DISTINCT TOP 1 REPLACE(dbo.fn_Parsename(WHOLEROW, '|', 0), CHAR(9), '') FROM #temp1) 
set @test = (select UPPER(convert(datetime,substring(@string,2,charindex('-',@string,1)-2)))) 
set @month =(left(@test,3)) 

set @year = (right(@test,5)) 

set @result = @month + @year 
-- select @result 

set @sourceTable = 'gen_048_'[email protected] 
select @sourceTable 

declare @string2 varchar(255) 
set @string2 = (select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM @sourceTable) 
select @string2 

Bu

enter image description here

tablo değişkeni "@sourceTable" ilan Must hata

olduğunu.

+0

@ @ testin değeri nedir? Peki şimdi ne kazanıyorsun? Bunun yerine ne almayı * beklediniz? –

+0

Öncelikle mevcut kodunuzdaki sorun nedir –

+0

Dinamik Sorgulamaya İhtiyacı Var –

cevap

2

Sen @sourcetable ilan edilmez

SET @string2 = 'select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM ' 
       + Quotename(@sourceTable) 

EXEC (@string2) 
+0

Teşekkürler! Bu sadece iyi çalışıyor. Şimdi tek sorunum, bu referans numarasının satırlarının nasıl güncelleneceği. –

0
set @string2 = (select convert(varchar(55),refdate)+'-'+convert(varchar(55),refcount) FROM @sourceTable) 
+0

Zaten bunu yaptım, bu diğer sorudan tam dizedir, ancak çalışmıyor. Bu, "@sourceTable" tablo değişkenini bildirmek zorundadır. ". –

+0

Açıkça sağladığınız koddan böyle bir değişkene sahip değilsiniz: @sourceTable –

+0

" @sourceTable "ifadesi varchar mı? böylece bir tane daha çizgi eklersiniz. ==> decile "@sourceTable" varchar (15) –

1

dinamik sorgu ihtiyaç hata o yüksek sesle ve net bağırır.

başında ekleyin:

declare @sourcetable varchar(50) 

Ayrıca, sana sorgular ve değişken kullanarak bu tür dinamik SQL kullanmak gerekir inanıyoruz.

+0

Evet @sourceTable'ı ilan ettim, bu yüzden hala bu hatayı almamın garip bir nedeni. Onu oraya koymayı unuttum. –