首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >全局临时表的PHP Oracle问题

全局临时表的PHP Oracle问题
EN

Stack Overflow用户
提问于 2018-06-06 03:13:26
回答 2查看 177关注 0票数 0

我使用的是PHP 7.21和Oracle 12c。我有一个全局临时表的问题。有时数据会返回一个空表,我只是在临时表中遇到了这个问题。我在Laravel和CodeIgniter中都尝试过,但问题仍然存在。下面的代码中有没有什么明显的问题?

代码:

代码语言:javascript
复制
<?php

$c = oci_new_connect("system", "1234", "127.0.0.1:1521/ORCL:POOLED");
oci_execute(oci_parse($c,"CALL pr_test()"));
$s = oci_parse($c, 'select * from GTT_TABLEs');
oci_execute($s);
oci_fetch_all($s, $res);
var_dump($res);   

SQL代码:

代码语言:javascript
复制
--- Global Temporary Table ----    
CREATE GLOBAL TEMPORARY TABLE "SYSTEM"."GTT_TABLES" 
   (    "ID" NUMBER(10,0) NOT NULL ENABLE, 
    "FIRSTNAME" VARCHAR2(191 BYTE), 
    "LASTNAME" VARCHAR2(191 BYTE), 
    "EMAIL" VARCHAR2(191 BYTE), 
    "POINTS" VARCHAR2(191 BYTE), 
    "NOTES" VARCHAR2(191 BYTE), 
    "CREATED_AT" TIMESTAMP (6), 
    "UPDATED_AT" TIMESTAMP (6), 
    "AGE" NUMBER(10,0), 
    "JOB" VARCHAR2(191 BYTE), 
    "GENDER" VARCHAR2(191 BYTE), 
    "COUNTRY" VARCHAR2(191 BYTE), 
    "SALE_DATE" VARCHAR2(191 BYTE)
   ) ON COMMIT PRESERVE ROWS ;  

--- PROCEDURE -----            
create or replace PROCEDURE PR_TEST  AS
BEGIN
DELETE GTT_TABLED;  
INSERT INTO GTT_TABLES (SELECT * FROM DATATABLES);
COMMIT;
END;
EN

回答 2

Stack Overflow用户

发布于 2018-06-06 03:19:56

临时表中的数据仅对您的会话可见,因此,除了您之外,没有人可以看到或使用它。这是你的案子吗?如果是这样,请切换到“普通”表;您将需要一些额外的标识符,以帮助您在不同用户之间区分数据。

另外,我建议您在SYSTEM ()模式中创建自己的对象时不要使用,这也是您目前正在做的事情。

票数 0
EN

Stack Overflow用户

发布于 2018-06-07 13:38:14

这是一个例子,也是打字错误。

代码语言:javascript
复制
--- Global Temporary Table ----
CREATE GLOBAL TEMPORARY TABLE "GSFIN"."GTT_TABLES"
( "ID" NUMBER(10,0) NOT NULL ENABLE,
"FIRSTNAME" VARCHAR2(191 BYTE),
"LASTNAME" VARCHAR2(191 BYTE),
"EMAIL" VARCHAR2(191 BYTE),
"POINTS" VARCHAR2(191 BYTE),
"NOTES" VARCHAR2(191 BYTE),
"CREATED_AT" TIMESTAMP (6),
"UPDATED_AT" TIMESTAMP (6),
"AGE" NUMBER(10,0),
"JOB" VARCHAR2(191 BYTE),
"GENDER" VARCHAR2(191 BYTE),
"COUNTRY" VARCHAR2(191 BYTE),
"SALE_DATE" VARCHAR2(191 BYTE)
) ON COMMIT PRESERVE ROWS ;

--- PROCEDURE -----
create or replace PROCEDURE PR_TEST AS
BEGIN
DELETE GSFIN.GTT_TABLES;
INSERT INTO GSFIN.GTT_TABLES (SELECT * FROM GSFIN.DATATABLES);
COMMIT;
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50707387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档