...特に、MSSQL 2005のfn_listextendedpropertyシステム関数です。ADO/C++からMSSQLシステム関数を呼び出す方法は?
データベースオブジェクトに '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エラーコレクションのうち、剥離エラーです。出力は、スレッドIDなどの余分なテキストを追加する小さなユーティリティ関数からのものです。無視してください。
(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を省略しても、同じエラーが発生します。 –
OK。 –