... в частности, системная функция fn_listextendedproperty в MSSQL 2005.Как вы вызываете системную функцию MSSQL из ADO/C++?
Я добавил расширенное свойство в свой объект базы данных с именем «schemaVersion». В моем приложении MSVC, используя ADO, мне нужно определить, существует ли это расширенное свойство, и, если это так, вернет значение строки из него.
Вот код T-SQL, который делает то, что я хочу. Как написать это в C++/ADO или иначе выполнить работу?
select value as schemaVer
from fn_listextendedproperty(default, default, default, default, default, default, default)
where name=N'schemaVersion'
Вот код, который я пробовал вначале. Он потерпел неудачу с ошибкой перечисленных ниже код:
_CommandPtr cmd;
cmd.CreateInstance(__uuidof(Command));
cmd->ActiveConnection = cnn;
cmd->PutCommandText("select value "
"from fn_listextendedproperty(default, default, default, default, default, default, default) "
"where name=N'schemaVersion'");
VARIANT varCount;
cmd->Execute(NULL, NULL, adCmdText);
... вот ошибки я очищенные из коллекции ADO ошибок. Выход из моей небольшой функции полезности, которая добавляет дополнительный текст, такой как идентификатор потока и т. Д., Поэтому игнорируйте это.
(Proc:0x1930, Thread:0x8A0) INFO : === 1 Provider Error Messages : =======================
(Proc:0x1930, Thread:0x8A0) INFO : [ 1] (-2147217900) 'Incorrect syntax near the keyword 'default'.'
(Proc:0x1930, Thread:0x8A0) INFO : (SQLState = '42000')
(Proc:0x1930, Thread:0x8A0) INFO : (Source = 'Microsoft OLE DB Provider for SQL Server')
(Proc:0x1930, Thread:0x8A0) INFO : (NativeError = 156)
(Proc:0x1930, Thread:0x8A0) INFO : ==========================================================
EDIT: Обновленный вызов в соответствии с предложениями. Также изменилось значение «SELECT value AS schemaVer» на «SELECT value».
EDIT: Изменен первый параметр Execute() на NULL на предложение. Это фиксировало мою первоначальную проблему, и я перешел к следующему. :)
Я могу, это не проблема. –
Даже когда я опускаю USE из текста команды, происходит тот же самый сбой. –
ОК. Будет копать глубже ... –