2011-12-17 1 views
0

мне нужно иметь сгенерированный запрос:Как добавить запрос в виде строки в другой запрос

SELECT @numberOfRecords = COUNT(*) FROM Car WHERE CarId not in (Select CarId from CarData) 

На данный момент у меня есть:

DECLARE @sql NVARCHAR(255) 
SET @sql='Select CarId from CarData' 

DECLARE @numberOfRecords BIGINT 
SELECT @numberOfRecords = COUNT(*) FROM Car WHERE CarId not in (@sql) 

Я пытался различные другие комбинации, как '(' гайки он не работает. Что мне нужно изменить, чтобы он работал?

+0

Я добавил больше подробностей к моему ответу, надеюсь, это поможет –

ответ

2

Что вы ищете называется динамическим SQL, есть много статей об этом, вы должны будете использовать sp_executesql, если вы используете SQL Server

есть пример here что-то подобное тому, что вы пытаясь сделать

ваше решение должно выглядеть примерно так

DECLARE @carIdSql  NVARCHAR(255), 
     @sql    NVARCHAR(MAX), 
     @ParamDefinition NVARCHAR(MAX), 
     @numberOfRecords BIGINT 

SET @carIdSql='Select CarId from CarData'; 

SET @sql = 
N'SELECT @numberOfRecordsOUT = COUNT(*) 
    FROM Car WHERE CarId not in (' + @carIdSql + ')' 

SET @ParamDefinition = '@numberOfRecordsOUT BIGINT OUTPUT'; 

EXECUTE sp_executesql 
    @sql, 
    @ParamDefinition, 
    @numberOfRecordsOUT = @numberOfRecords OUTPUT; 

SELECT @numberOfRecords 
+0

отлично, спасибо большое! – user278618

2

Вы должны использовать sp_executesql

DECLARE 
@numberOfRecords  INT , 
@VariableSQL NVARCHAR(255), 
@SQLStmt  NVARCHAR(255), 
@paramtype NVARCHAR(100) 

SET @VariableSQL = 'Select CarId from CarData' 

SET @SQLStmt = 'SELECT @counter = COUNT(1) FROM Car WHERE CarId NOT IN (' + @variablesql + ')' 

SET @ParamType = '@counter int output' 

EXEC sp_executesql @SQLStmt, @paramtype, @Counter = @numberOfRecords OUTPUT 
PRINT @numberOfRecords 
+0

Объясните нижний угол, пожалуйста? –

+0

Вы полностью пропустили то, что они пытались сделать (подключите динамический запрос '' не в '). Для этого им нужен динамический SQL. –

+0

Я хочу, чтобы вы знали, что это не я – user278618