在SQLSRV中添加temptable并查询时,没有结果返回

问题描述 投票:0回答:1

我正在尝试创建一个temptable并进行一些计算,填充temptable并最终从创建的临时表中获取结果。但到目前为止,我一直没有成功。我的查询涉及的更多一点,但这是我想要做的事情。此代码假定我们已使用codeigniter设置数据库连接。

-- This generate no results i.e. Array ()
$sql = "CREATE TABLE #output(name varchar NULL, id int NULL);
            insert into #output (name,id) VALUES('sam',5) 
            SELECT * FROM #output";
$res = $this->db->query($sql);

--Also tried this and returns nothing
$queryList = [
    'sql1' => "IF OBJECT_ID('tempdb.dbo.#output', 'U') IS NOT NULL DROP TABLE #output;",
    'sql2' => "CREATE TABLE #output(name varchar NULL, id int NULL);",
    'sql3' => "insert into #output (name,id) VALUES('sam',5)",
    'sql4' => "SELECT * FROM #output"
        ];
$result = array();
        foreach($queryList as $key => $value){
            $result[$key] = $this->db->query($value, FALSE, TRUE); 
        }

写这两个是为了使用codeigniter db驱动程序。以上查询事件均未在数据库的tempdb中生成#output临时表。

我也试过直接使用sqlsrv_query,这个至少创建了#output temptable,但没有给我任何结果。

-- Created the #output temptable but didn't give me back the data inserted
$conn = sqlsrv_connect( $serverName, $connectionInfo);
            if( $conn ) {
                 echo "Connection established.<br />";
                 $sql = "CREATE TABLE #output(name varchar NULL, id int NULL);
            insert into #output (name,id) VALUES('sam',5) 
            SELECT * FROM #output
            --DROP TABLE #output";
            $stm = sqlsrv_query($conn, $sql,[]);
            while( $obj = sqlsrv_fetch_object( $stm )) {
                echo $obj->name . '<br />';
                //print_r($obj);
          }

我一直在尝试很多场景,但无法弄清楚我的代码有什么问题。哦BTW我也尝试了codeigniter trans_start()并结束并添加每个查询作为一个单独的查询,但这也没有成功。我无法思考或搜索任何其他内容,所以这是我的帮助请求。

这是我的环境:

  • SQLSRV 5.3
  • SQL Server 2012
  • ODBC驱动程序17
  • CodeIgniter 3.1.9
  • PHP 7.0.31
php codeigniter sqlsrv
1个回答
1
投票

解:

您需要解决一些问题:

  • 使用以下格式定义qazxsw poi列:qazxsw poi。如果未指定qazxsw poi,则默认长度为1,当您尝试INSERT值'sam'时,将生成警告。
  • varchar作为第一个声明。如果您错过了该部分,则您的语句将返回多个结果集,因此您必须使用varchar [(n|max)]使结果集可用。

工作范例:

n

笔记:

我对CodeIgniter不太熟悉,但我认为这是你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.