【发布时间】:2012-03-06 14:45:32
【问题描述】:
请帮忙,
其实我的查询没问题,但问题是当插入10条记录中的第9条后,它说第10条记录有错误,但是如果我单独运行查询; 第一个查询有 9 条记录,那么 第二个查询只有 1 个,两者都没有错误。
以下是我使用的查询:
DECLARE @tblLkUp VARCHAR(MAX),
@tblLkUpCol VARCHAR(MAX),
@strSQL VARCHAR(MAX)
SET @tblLkUp =
(SELECT DISTINCT TOP 1 t.name AS TableName
FROM sys.tables t JOIN sys.indexes i ON i.index_id = t.schema_id
WHERE t.name LIKE '%$POS Lookup')
SET @tblLkUpCol =
(SELECT DISTINCT TOP 1 t.name AS TableName
FROM sys.tables t JOIN sys.indexes i ON i.index_id = t.schema_id
WHERE t.name LIKE '%$POS Lookup Columns')
SET @strSQL = 'IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUp) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUp) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''Zoom Trans. SPO Line Details'', '''',
''ZOOM'', ''1'', ''99008981'', ''2'', ''10'', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''', '''', ''0'', ''0'',
''0'', ''0'', ''0'', ''0'', '''', ''1'', '''', '''', '''', '''', '''', ''0'', ''0'', ''0'', '''', '''', ''0'', ''0'',
''0'', ''0'', '''', '''', ''0'', ''0'', ''0'', ''0'', ''0'', ''0'', ''0'', ''0'')
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''1'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''1'', ''2'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''2'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''2'', ''5'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''3'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''3'', ''10'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''4'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''4'', ''10012700'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''5'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''5'', ''10012701'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''6'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''6'', ''10012702'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''7'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''7'', ''10012703'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''8'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''8'', ''10012704'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''9'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''9'', ''10012705'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''10'') = 0
BEGIN
INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''10'', ''10012750'', ''0'', ''0'', '''', ''0'', ''0'', '''', ''0'', ''0'', ''0'', '''')
END
END'
EXEC (@strSQL)
提前致谢。
【问题讨论】:
-
Msg 105, Level 15, State 1, Line 55 Unclosed quotation mark after the character string ''. Msg 102, Level 15, State 1, Line 55 Incorrect syntax near ''. -
最后做
print @strSQL,分析已经建好的查询。 -
我这样做了
print @strSQLMikael,它说我在第 10 条记录中有错误..IF (SELECT COUNT(*) FROM ' + QUOTENAME(@tblLkUpCol) + ' WHERE [Lookup ID] = ''ZOOMSPODTL'' AND [Table No_] = ''99008981'' AND [Column No_] = ''10'') = 0 BEGIN INSERT INTO ' + QUOTENAME(@tblLkUpCol) + ' VALUES(DEFAULT, '''', ''ZOOMSPODTL'', ''99008981'', ''10'', ''10012750'', ''0'', ''0'', '