2

私の仕事では、システムのオブジェクトを取得するためにSQLを実行する必要があり、以下のリンクに関する1つの解決策を見つけることができます:why-is-this-query-not-working-in-sybase、以下の正しいSQLリスト:

DECLARE my_cursor CURSOR FOR
SELECT name
FROM   sysobjects
WHERE  type = 'U'
go

DECLARE @tableName VARCHAR(500)

OPEN my_cursor
FETCH my_cursor INTO @tableName

WHILE @@sqlstatus = 0
 BEGIN
  --Do something here
    select @tableName
  FETCH my_cursor INTO @tableName

END

CLOSE my_cursor
DEALLOCATE CURSOR my_cursor

上記のSQLはSysbaseで正しく実行されていますが、PowerShellスクリプトを記述し、上記のSQLを含めると、厄介なことが起こり、以下のエラーが発生します。

******************* Exception type : System.Data.Odbc.OdbcException
 ****************** Exception message : ERROR [HY000] [MERANT][ODBC Sybase driver][SQL Server]DECLARE CURSOR must be the only statement in a query batch.

たくさん検索しましたが結果が出ませんでした。誰か助けてくれませんか?非常にthx。

4

1 に答える 1

0

おそらく、SQL (cur.sql など) でスクリプトを準備し、isql で実行する必要があります。

isql -Uuser -Ppass -Sserver -Ddatabase -icur.sql

お役に立てば幸いです。

于 2012-08-14T08:51:57.653 に答える