Код: Выделить всё
CREATE PROCEDURE tsp_ItemIDtoString (@ItemID binary(8), @SItemID nvarchar(32) output) AS
/*
*
* tsp_ItemIDtoString
*
* Returns a comma separated string representation
* of an item id
*
* Parameters:
* @ItemID - (I) binary 8 byte item id
* @SItemID - (O) string representation of item id
*
*/
declare @i as int
set @SItemID = ""
if (@ItemID is not null) begin
set @i = 8
while (@i > 0) begin
select @SItemID = "," + cast(cast(substring(@ItemID, @i ,1) as int) as varchar) + @SItemID
set @i = @i -1
end
set @SItemID = right(@SItemID, len(@SItemID) - 1 )
end
Объект или имя столбца отсутствует или пусто. Для операторов SELECT INTO убедитесь, что у каждого столбца есть имя. Для других операторов ищите пустые имена псевдонимов. Псевдонимы, определенные как "" или [], не допускаются. Измените псевдоним на допустимое имя.
Это связано с тем, что по умолчанию SET QUOTED_IDENTIFIER включен и не позволяет литералам разделяться одним кавычки.
Если я добавлю следующие строки перед хранимой процедурой в SSMS, она завершится успешно:
Код: Выделить всё
SET QUOTED_IDENTIFIER OFF;
GO
...(The above stored procedure).
Я делаю следующее:< /p>
Код: Выделить всё
pConnection->Execute(_T("SET QUOTED_IDENTIFIER OFF;");
pConnection->Execute(strDefinition); // strDefinition is the above stored procedure.
Почему решение работает для SSMS, но не для ADO?
Подробнее здесь: https://stackoverflow.com/questions/793 ... do-execute
Мобильная версия