2

在我的工作中,我需要运行一个 sql 来获取系统的对象,我可以找到一个关于以下链接的解决方案: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.

我搜索了很多但没有结果,任何人都可以帮助我吗?非常感谢。

4

1 回答 1

0

可能您必须使用 SQL 准备一个脚本(例如 cur.sql)并使用 isql 运行它:

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

我希望它对你有用。

于 2012-08-14T08:51:57.653 回答