OSQL
innoセットアップを使用していくつかのSQLクエリを実行しています。次のコードを使用して実行していますOSQL
。これは単なる例です
SQLQuery:= '"EXEC sp_addserver ''PCNAME'';"';
Param:= '-S(local) -Usa -Psa -Q ' + SQLQuery;
Exec('osql.exe', Param, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
これはうまくいきます。問題は、ResultCode
値が常に 0 であることです。クエリが実行されない場合でも。たとえば、無効なストアド プロシージャ名を渡す以下のような同じクエリを試しても、ResultCode
まだ 0 です。
SQLQuery:= '"EXEC sp_invalidname ''PCNAME'';"';
Param:= '-S(local) -Usa -Psa -Q ' + SQLQuery;
Exec('osql.exe', Param, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
これで適切なコードが返されないのはなぜですか。管理スタジオで 2 番目のクエリを実行すると、次のようなエラーが表示されます
Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure 'sp_invalidname'
ここで戻りコードは2812
. innoで実行すると、これが得られないのはなぜですか。innoでこのエラーコードを取得するにはどうすればよいですか?