【问题标题】:How do I call remote functions in the sqlsrv API in PHP?如何在 PHP 的 sqlsrv API 中调用远程函数?
【发布时间】:2011-03-06 19:14:03
【问题描述】:

这几乎就是问题所在。我创建了一个返回 bigint 的存储函数,我希望将返回值存储在 PHP 变量中。该脚本使用 sqlsrv API(因为 mssql 不适用于 SQL Server 2008)。我该怎么做?我在任何地方都找不到文档,而且调用程序似乎不起作用,执行程序也不起作用。

【问题讨论】:

    标签: php sql-server-2008 api function


    【解决方案1】:

    根据值请求调用用户定义函数。它可以在 SQL 查询中,也可以在 SET 命令中。

    例子:

    SET @myVariable = MyUserDefinedFunction(@parameter)
    SELECT MyUserDefinedFunction(@parameter2),@myVariable
    

    就是这样。 现在,在此示例中,您可以访问查询的结果,就像在任何其他查询中一样。

    顺便说一句,下次你问问题时,请更准确一点:

    • 是用户定义的函数,还是存储过程?
    • 您使用的是哪种 API?
    • 可能有一些代码?

    【讨论】:

    • 但是,如何将该值返回给 PHP 变量?
    • 您将如何在常规 SELECT 中执行此操作?我无法回答这个问题,因为您对此给出的唯一提示是API。哪一个?我不知道。
    • 等等,也就是说我可以把它写成一个普通的查询,然后把它当作一个普通的查询来执行?我可以用分号分隔行吗?
    • 这是一个用户定义的函数。我使用的 API 名为 sqlsrv。两者都在我的问题中说明。关于代码,这是不必要的,因为我提出了一个关于如何做某事的一般性问题,并且没有代码可以显示。发布我的功能是没用的。
    • 好的,然后使用@Carlos(不是你。哇,同样的昵称)显示的函数,查询使用我写的。
    【解决方案2】:
    $stmt = sqlsrv_query($this->conn, $sql, $params);
    if( $stmt == false)
    {
          print_r( sqlsrv_errors());
    }else{
         $result_set = sqlsrv_fetch_array($stmt);
         var_dump($result_set);
    }
    

    没有???

    【讨论】:

    • 是的,但是如何编写查询?使用调用还是执行?
    • 谢谢,但是,“函数”呢?我如何调用函数而不是过程有什么不同吗?
    • Si te llamas Carlos,espero que hables español。 La verdad, no tengo mucha experiencia en esa lib en concreto o con MSSQL, pero realmente cuando he trabajado en otros entornos como postgres, tanto con funciones como con procedimientos no hay ninguna diferencia en cómo se devuelven los datos al cliente。 Por lo que veo el código del enlace el valor retornado por el procedimiento lo esta cargando directamente en una variable que se indica como parámetro de salida。 No se si te puedo ayudar mucho más... pero cual es el problema concreto?没有 puedes obtener el valor aun?
    • Lo logré de todos modos。 Posteo la respuesta.
    【解决方案3】:

    我想出了答案。

    $query = "SELECT functionname(?,?,...,?) AS alias";
    $bindvars = array($bindvar0,...,$bindvarn);
    $resultset = sqlsrv_query($query, $connection, $bindvars);
    $alias = sqlsrv_fetch_array($resultset);
    

    我们得到 $alias['alias'] 的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      相关资源
      最近更新 更多