我正在尝试创建一个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()
并结束并添加每个查询作为一个单独的查询,但这也没有成功。我无法思考或搜索任何其他内容,所以这是我的帮助请求。
这是我的环境:
解:
您需要解决一些问题:
varchar
作为第一个声明。如果您错过了该部分,则您的语句将返回多个结果集,因此您必须使用varchar [(n|max)]
使结果集可用。工作范例:
n
笔记:
我对CodeIgniter不太熟悉,但我认为这是你的问题。