2017-04-03 95 views
0

這是正在工作的查詢;SQL無效列名稱錯誤

@tc varchar(11), 
@urun nvarchar(50), 
@islem nvarchar(20), 
@ilk_agirlik nvarchar(4), 
@son_Agirlik nvarchar(4) 
AS 
BEGIN 
SET NOCOUNT ON; 
DECLARE @tabloadi NVARCHAR(15) 
declare @sutunadi1 nvarchar(max) 
set @sutunadi1 = @urun+N'_'[email protected]+N'_ilk' 
declare @sutunadi2 nvarchar(max) 
set @sutunadi2 = @urun+N'_'[email protected]+N'_son' 
SET @[email protected] 
IF EXISTS(SELECT * 
      FROM INFORMATION_SCHEMA.COLUMNS 
      WHERE [email protected] 
       AND [email protected]) 
BEGIN 
    declare @sql nvarchar(max) 
    SET @Sql = N'insert into dbo.' + QUOTENAME(@Tc) 
     + N'(' + QUOTENAME(@sutunadi1)+ N',' + QUOTENAME(@sutunadi2) + N', gun, ay, yil, saat, dakika) ' 
     + N'VALUES (' + @ilk_agirlik+ N',' + @son_agirlik + N',' + convert(varchar(2),day(GETDATE())) + N',' + convert(varchar(2),month(GETDATE())) + N',' + convert(varchar(4),year(GETDATE())) + N',' + convert(varchar(2),datepart(hh,GETDATE())) + N',' + convert(varchar(2),datepart(mi,GETDATE())) + N')' 
    EXECUTE sp_executesql @Sql 
END  

當我加2列,其名稱urun和islem到我剛剛改變了這種代碼表 ;

SET @Sql = N'insert into dbo.' + QUOTENAME(@Tc) 
     + N'(' + QUOTENAME(@sutunadi1)+ N',' + QUOTENAME(@sutunadi2) + N', gun, ay, yil, saat, dakika, urun, islem) ' 
     + N'VALUES (' + @ilk_agirlik+ N',' + @son_agirlik + N',' + convert(varchar(2),day(GETDATE())) + N',' + convert(varchar(2),month(GETDATE())) + N',' + convert(varchar(4),year(GETDATE())) + N',' + convert(varchar(2),datepart(hh,GETDATE())) + N',' + convert(varchar(2),datepart(mi,GETDATE())) + N',' + @urun + N',' + @islem + N')' 

它產生一個錯誤,「無效列名」 什麼是錯,我只是添加了兩列工作查詢????

+0

VARCHAR的日期必須有引號 –

+0

使用CHAR(39)選擇並執行它,看看是否有什麼錯誤的語句之前使用CONCAT()代替+ –

+0

打印@SQL。 –

回答

0

嘗試用更換您的最後一行:

+ N'VALUES (' + @ilk_agirlik+ N',' + @son_agirlik + N',' + convert(varchar(2),day(GETDATE())) + N',' + convert(varchar(2),month(GETDATE())) + N',' + convert(varchar(4),year(GETDATE())) + N',' + convert(varchar(2),datepart(hh,GETDATE())) + N',' + convert(varchar(2),datepart(mi,GETDATE())) + N',''' + @urun + N''',''' [email protected] + N''')' 
0

它解決。 thanx Kannan Kandasamy的解決方案,當我使用char(39)和concat它解決了。

SET @Sql = concat('insert into dbo.', QUOTENAME(@Tc), 
     '(', QUOTENAME(@sutunadi1),',',QUOTENAME(@sutunadi2) ,', gun, ay, yil, saat, dakika, urun, islem) ' 
      ,'VALUES (' , @ilk_agirlik,',' , @son_agirlik ,',',convert(varchar(2),day(GETDATE())) ,',',convert(varchar(2),month(GETDATE())) ,',' , convert(varchar(4),year(GETDATE())) ,',' , convert(varchar(2),datepart(hh,GETDATE())) ,',' , convert(varchar(2),datepart(mi,GETDATE())) ,',' , char(39), @urun,char(39),',', char(39),@islem,char(39) ,')')