-1
$db_name = "hana";
$username = "SYSTEM";
$password = "my_real_password";

$conn = odbc_connect($db_name, $username, $password) or die(odbc_error_msg()); 
$sql = "SELECT REGION_NAME, SUM(SALES_AMOUNT) FROM \"_SYS_BIC\".\"mydemo/CV_SALES\" GROUP BY REGION_NAME"; 
$result = odbc_prepare($conn, $sql);

odbc_close($conn); 
  1. 我已经确认它可以连接。

  2. 当我运行 $result = odbc_prepare($conn, $sql); 它向我抛出了这个错误

    PHP 警告:odbc_prepare():SQL 错误:[unixODBC][SAP AG][LIBODBCHDB SO][HDB] 一般错误;-10808 功能(可滚动结果)尚未在模块中实现:/HDB/IMP/NewDB100_REL/src// /sys/src/Inter,第 9 行 /home/payomdousti/Developer/hana.php 中的 SQLPrepare 中的 SQL 状态 S1000

    我用它来安装 php odbc 驱动程序 => sudo apt-get install php5-odbc

    PHP版本

    带有 Suhosin-Patch (cli) 的 PHP 5.3.10-1ubuntu3.4(构建时间:2012 年 9 月 12 日 18:59:41) 版权所有 (c) 1997-2012 PHP Group Zend Engine v2.3.0,版权所有 (c) 1998-2012禅德科技

    正如您在 Rev38 SAP HANA 的 HDB 驱动程序中看到的那样,我正在使用 unixODBC。

  3. 我可以使用带有以下代码的 pyodbc 在 Python 中成功准备和执行查询。

    import pyodbc
    conn = pyodbc.connect('DSN=hana;UID=SYSTEM;PWD=my_real_password')
    cursor = conn.cursor()
    cursor.execute("SELECT REGION_NAME, SUM(SALES_AMOUNT) FROM \"_SYS_BIC\".\"mydemo/CV_SALES\" GROUP BY REGION_NAME")
    print cursor.fetchall()
    conn.close()
    

通过 ODBC 通过 PHP 进行连接是一项业务需求。我们无法访问 SAP XS,因此这确实是最佳选择。我对使用 RFC、SOAP、OData 或 XMLA 的解决方案不感兴趣

4

1 回答 1

0

根据您的错误,您使用的 SAP HDB 驱动程序似乎不支持可滚动游标。您是否尝试过创建不可滚动(仅向前)游标?

例如,在 Microsoft SQL Server 中,您必须设置SQL_ATTR_CURSOR_TYPESQL_CURSOR_FORWARD_ONLY.

于 2013-07-18T19:07:17.860 回答