当执行计划中存在“PARTITION LIST SUBQUERY”时,某些内容(错误?)会取消实例化包

2024-03-12

这是 Oracle 12c 的错误吗?

我在 Oracle Linux 上运行 64 位 Oracle 12.1.0.2。
遇到一件奇怪的事情:当执行计划切换到使用“PARTITION LIST SUBQUERY”时,受影响的查询中使用的包将丢失其所有变量的值。看起来就像运行 DBMS_SESSION.RESET_PACKAGE 后一样,有些东西取消了包的实例化。
该查询使用分区表,该分区表通过与另一个表连接来限制,该表使用确定性“getter”函数读取的包中的变量进行限制。如果我将函数更改为非确定性的,或者更改任何内容以使解释计划不使用“分区列表子查询”,则不会出现问题。

请参阅在我的数据库上使用“PARTITION LIST SUBQUERY”生成解释计划的综合示例(在 4 上尝试过):

-- Clean-up ----------------------------------------------------------------------------------------------------------------------------------------------------
DROP TABLE facts CASCADE CONSTRAINTS;
DROP TABLE DIM_CALENDAR CASCADE CONSTRAINTS;
DROP PACKAGE Parameters_PKG;

-- First, partitioned table  ----------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE factS
( mth VARCHAR2(6 BYTE)    NOT NULL
, just_data VARCHAR2(120 BYTE)  NOT NULL
)
PARTITION BY LIST (mth)
(  
   PARTITION M01 VALUES ('M01')
,  PARTITION M02 VALUES ('M02')
,  PARTITION M03 VALUES ('M03')
,  PARTITION M04 VALUES ('M04')
,  PARTITION M05 VALUES ('M05')
,  PARTITION MAX_VALUE VALUES (DEFAULT)
    LOGGING
    ROW STORE COMPRESS BASIC
)
;
INSERT INTO facts SELECT 'M' || TO_CHAR(LEVEL, 'FM09'), STANDARD_HASH(LEVEL, 'SHA384' ) FROM dual connect BY LEVEL < 4;
COMMIT;

-- Second table to iterate the partitions of the first table ------------------------------------------------------------------------------------------------
CREATE TABLE DIM_CALENDAR
(
  CLIENT_ID  VARCHAR2(10 BYTE)              NOT NULL,
  mth        VARCHAR2(6 BYTE)               NOT NULL
)
;
INSERT INTO DIM_CALENDAR SELECT 'TEST', 'M' || TO_CHAR(LEVEL, 'FM09') FROM dual connect BY LEVEL < 2;
INSERT INTO DIM_CALENDAR SELECT 'OTHER', 'M' || TO_CHAR(LEVEL, 'FM009') FROM dual connect BY LEVEL < 10;
INSERT INTO DIM_CALENDAR SELECT 'ANOTHER', 'M' || TO_CHAR(LEVEL, 'FM09') FROM dual connect BY LEVEL < 2;
COMMIT;

-- Analyzing both tables to get to the desired explain plan ----------------------------------------------------------------------------------------------------
EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS (NULL, NULL);

-- A package with deterministic ffunction ---------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PACKAGE Parameters_PKG
AUTHID DEFINER
AS
   FUNCTION  get_Client_ID RETURN VARCHAR2 deterministic; 
   PROCEDURE Set_Client_ID (p_Client_ID     VARCHAR2);
END Parameters_PKG
;
CREATE OR REPLACE PACKAGE BODY Parameters_PKG
AS
   Client_ID  VARCHAR2(255);
FUNCTION get_Client_ID   RETURN VARCHAR2   
AS
   PRAGMA UDF;
BEGIN
   IF Client_ID IS NULL THEN 
      RAISE_APPLICATION_ERROR(-20001, 'Fatal error.');
   END IF;
   RETURN Client_ID;
END get_Client_ID;
PROCEDURE Set_Client_ID (P_Client_ID VARCHAR2)
IS
BEGIN
   Client_ID := UPPER(TRIM(p_Client_ID));
END Set_Client_ID;
END Parameters_PKG
;
----------------------------------------------------------------------------------------------------------------------------------------------------------------


-- The test ----------------------------------------------------------------------------------------------------------------------------------------------------
-- exec Parameters_PKG.Set_Client_ID('TEST') -- this should return 2 rows
exec Parameters_PKG.Set_Client_ID('wrong_value_to_have_0_rows_returned') 
SELECT Parameters_PKG.Get_Client_ID FROM dual; -- a check that the value is really set.

SELECT f.mth, f.just_data  
FROM facts f, DIM_CALENDAR c  
WHERE c.CLIENT_ID = Parameters_PKG.Get_Client_ID
AND F.mth = C.mth
;


/* Failing explain plan with  "PARTITION LIST SUBQUERY"

SELECT STATEMENT  ALL_ROWSCost: 43.194  Bytes: 336  Cardinality: 3              
 4 HASH JOIN  Cost: 43.194  Bytes: 336  Cardinality: 3          
  2 PARTITION LIST SUBQUERY  Cost: 43.107  Bytes: 303  Cardinality: 3  Partition #: 2  Partitions accessed #KEY(SUBQUERY)   
   1 TABLE ACCESS FULL TABLE FACTS Cost: 43.107  Bytes: 303  Cardinality: 3  Partition #: 2  Partitions accessed #KEY(SUBQUERY)
  3 TABLE ACCESS FULL TABLE DIM_CALENDAR Cost: 87  Bytes: 44  Cardinality: 4    

*/

删除“确定性”关键字。确定性意味着对于同一组输入,我可以返回相同的输出,而无需再次评估该函数。你有no输入到该函数,所以我们永远不需要运行它。因此我们将返回 null,例如(省略您的设置代码)

--
-- with deterministic
--
SQL> CREATE OR REPLACE PACKAGE Parameters_PKG
  2  AUTHID DEFINER
  3  AS
  4     FUNCTION  get_Client_ID RETURN VARCHAR2 deterministic;
  5     PROCEDURE Set_Client_ID (p_Client_ID     VARCHAR2);
  6  END Parameters_PKG
  7  ;
  8  /

Package created.

SQL> CREATE OR REPLACE PACKAGE BODY Parameters_PKG
  2  AS
  3     Client_ID  VARCHAR2(255);
  4  FUNCTION get_Client_ID   RETURN VARCHAR2
  5  AS
  6     PRAGMA UDF;
  7  BEGIN
  8     IF Client_ID IS NULL THEN
  9        RAISE_APPLICATION_ERROR(-20001, 'Fatal error.');
 10     END IF;
 11     RETURN Client_ID;
 12  END get_Client_ID;
 13  PROCEDURE Set_Client_ID (P_Client_ID VARCHAR2)
 14  IS
 15  BEGIN
 16     Client_ID := UPPER(TRIM(p_Client_ID));
 17  END Set_Client_ID;
 18  END Parameters_PKG;
 19  /

Package body created.

SQL>
SQL>
SQL> exec Parameters_PKG.Set_Client_ID('TEST')

PL/SQL procedure successfully completed.

SQL> SELECT f.mth, f.just_data
  2  FROM facts f, DIM_CALENDAR c
  3  WHERE c.CLIENT_ID = Parameters_PKG.Get_Client_ID
  4  AND F.mth = C.mth
  5  ;
FROM facts f, DIM_CALENDAR c
     *
ERROR at line 2:
ORA-00604: error occurred at recursive SQL level 1
ORA-20001: Fatal error.
ORA-06512: at "MCDONAC.PARAMETERS_PKG", line 9


SQL>
SQL> exec Parameters_PKG.Set_Client_ID('wrong_value_to_have_0_rows_returned')

PL/SQL procedure successfully completed.

SQL>
SQL> SELECT f.mth, f.just_data
  2  FROM facts f, DIM_CALENDAR c
  3  WHERE c.CLIENT_ID = Parameters_PKG.Get_Client_ID
  4  AND F.mth = C.mth
  5  ;
SELECT f.mth, f.just_data
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-20001: Fatal error.
ORA-06512: at "MCDONAC.PARAMETERS_PKG", line 9

--
-- without deterministic
--
SQL>
SQL> CREATE OR REPLACE PACKAGE Parameters_PKG
  2  AUTHID DEFINER
  3  AS
  4     FUNCTION  get_Client_ID RETURN VARCHAR2;
  5     PROCEDURE Set_Client_ID (p_Client_ID     VARCHAR2);
  6  END Parameters_PKG
  7  ;
  8  /

Package created.

SQL> CREATE OR REPLACE PACKAGE BODY Parameters_PKG
  2  AS
  3     Client_ID  VARCHAR2(255);
  4  FUNCTION get_Client_ID   RETURN VARCHAR2
  5  AS
  6     PRAGMA UDF;
  7  BEGIN
  8     IF Client_ID IS NULL THEN
  9        RAISE_APPLICATION_ERROR(-20001, 'Fatal error.');
 10     END IF;
 11     RETURN Client_ID;
 12  END get_Client_ID;
 13  PROCEDURE Set_Client_ID (P_Client_ID VARCHAR2)
 14  IS
 15  BEGIN
 16     Client_ID := UPPER(TRIM(p_Client_ID));
 17  END Set_Client_ID;
 18  END Parameters_PKG;
 19  /

Package body created.

SQL>
SQL>
SQL> exec Parameters_PKG.Set_Client_ID('TEST')

PL/SQL procedure successfully completed.

SQL> SELECT f.mth, f.just_data
  2  FROM facts f, DIM_CALENDAR c
  3  WHERE c.CLIENT_ID = Parameters_PKG.Get_Client_ID
  4  AND F.mth = C.mth
  5  ;

MTH    JUST_DATA
------ ------------------------------------------------------------------------------------------------------------------------
M01    C6537FE410CFA617AFE7F17E6DD72BD9A6EF9ED08CA1216A811320A31A1FE0F9E57D832061B1A7EAA3534D8473098CBF

1 row selected.

SQL>
SQL> exec Parameters_PKG.Set_Client_ID('wrong_value_to_have_0_rows_returned')

PL/SQL procedure successfully completed.

SQL>
SQL> SELECT f.mth, f.just_data
  2  FROM facts f, DIM_CALENDAR c
  3  WHERE c.CLIENT_ID = Parameters_PKG.Get_Client_ID
  4  AND F.mth = C.mth
  5  ;

no rows selected

SQL>
SQL>

这是使用 CONTEXT 变量的替代方法

SQL> CREATE TABLE factS
  2  ( mth VARCHAR2(6 BYTE)    NOT NULL
  3  , just_data VARCHAR2(120 BYTE)  NOT NULL
  4  )
  5  PARTITION BY LIST (mth)
  6  (
  7     PARTITION M01 VALUES ('M01')
  8  ,  PARTITION M02 VALUES ('M02')
  9  ,  PARTITION M03 VALUES ('M03')
 10  ,  PARTITION M04 VALUES ('M04')
 11  ,  PARTITION M05 VALUES ('M05')
 12  ,  PARTITION MAX_VALUE VALUES (DEFAULT)
 13      LOGGING
 14      ROW STORE COMPRESS BASIC
 15  )
 16  ;

Table created.

SQL> INSERT INTO facts SELECT 'M' || TO_CHAR(LEVEL, 'FM09'), STANDARD_HASH(LEVEL, 'SHA384' ) FROM dual connect BY LEVEL < 4;

3 rows created.

SQL> COMMIT;

Commit complete.

SQL>
SQL> CREATE TABLE DIM_CALENDAR
  2  (
  3    CLIENT_ID  VARCHAR2(10 BYTE)              NOT NULL,
  4    mth        VARCHAR2(6 BYTE)               NOT NULL
  5  )
  6  ;

Table created.

SQL> INSERT INTO DIM_CALENDAR SELECT 'TEST', 'M' || TO_CHAR(LEVEL, 'FM09') FROM dual connect BY LEVEL < 2;

1 row created.

SQL> INSERT INTO DIM_CALENDAR SELECT 'OTHER', 'M' || TO_CHAR(LEVEL, 'FM009') FROM dual connect BY LEVEL < 10;

9 rows created.

SQL> INSERT INTO DIM_CALENDAR SELECT 'ANOTHER', 'M' || TO_CHAR(LEVEL, 'FM09') FROM dual connect BY LEVEL < 2;

1 row created.

SQL> COMMIT;

Commit complete.

SQL> create context my_context using Parameters_PKG;

Context created.

SQL> CREATE OR REPLACE PACKAGE Parameters_PKG AS
  2     PROCEDURE Set_Client_ID (p_Client_ID     VARCHAR2);
  3  END Parameters_PKG;
  4  /

Package created.

SQL> CREATE OR REPLACE PACKAGE BODY Parameters_PKG AS
  2
  3  PROCEDURE Set_Client_ID (P_Client_ID VARCHAR2)
  4  IS
  5  BEGIN
  6     dbms_session.set_context('MY_CONTEXT','CLIENT_ID',UPPER(TRIM(p_Client_ID)));
  7  END Set_Client_ID;
  8  END Parameters_PKG;
  9  /

Package body created.

SQL> exec Parameters_PKG.Set_Client_ID('TEST')

PL/SQL procedure successfully completed.

SQL> SELECT f.mth, f.just_data
  2  FROM facts f, DIM_CALENDAR c
  3  WHERE c.CLIENT_ID = sys_context('MY_CONTEXT','CLIENT_ID')
  4  AND F.mth = C.mth
  5  ;

MTH
------
JUST_DATA
----------------------------------------------------------------------------------------------------
M01
C6537FE410CFA617AFE7F17E6DD72BD9A6EF9ED08CA1216A811320A31A1FE0F9E57D832061B1A7EAA3534D8473098CBF


1 row selected.

SQL>
SQL> exec Parameters_PKG.Set_Client_ID('wrong_value_to_have_0_rows_returned')

PL/SQL procedure successfully completed.

SQL>
SQL> SELECT f.mth, f.just_data
  2  FROM facts f, DIM_CALENDAR c
  3  WHERE c.CLIENT_ID = sys_context('MY_CONTEXT','CLIENT_ID')
  4  AND F.mth = C.mth
  5  ;

no rows selected

SQL>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当执行计划中存在“PARTITION LIST SUBQUERY”时,某些内容(错误?)会取消实例化包 的相关文章

  • Oracle SQL 从零件创建日期

    我在数据库中有两个日期字段 名为 EFFECTIVE DATE 和 POINT DATE 如何创建新的日期字段 其中日期由 EFFECTIVE DATE 年份 POINT DATE 月份和 POINT DATE 日期组成 我通常会使用 Da
  • C# 中强制关闭 oracle 连接

    我有一个报告窗口 显示从可能长时间运行的 Oracle 存储过程返回的结果 我的问题是 当用户关闭窗口时 与 Oracle 的连接保持打开状态 并且可能长时间运行的报告不会被取消 关闭打开的连接的唯一方法是 DBA 手动终止它们或用户退出整
  • 如何找到 Oracle 视图的基础列和表名称?

    这听起来应该很简单 但事实并非如此 我找不到任何 Oracle 元数据 视图可以提供 Oracle 视图列的基础列和表名称 我发现这样做的唯一方法是解析视图源 SQL 这与精确的科学相去甚远 为了解释我想要什么 请考虑我在 SCOTT 模式
  • 尝试在 Oracle 11.2.0.2.0(64 位)中获取连接时出现 java.lang.ArithmeticException

    我目前正在 Oracle 中使用 Java 存储过程 并且在尝试在 Java 代码中获取连接时看到一些奇怪的行为 我的Java被打包成jar文件 然后使用以下命令部署到Oracle中loadjava命令行实用程序 Apackage然后在数据
  • 如何记录更改列 DDL 操作

    我需要创建一个数据库触发器来记录每个更改 Add Column Modify Column Drop Column 使用Oracle的模式触发器在特定表中执行语句 如何获得 到目前为止我尝试了下面的代码 TRIGGER after ddl
  • 使用 createNativeQuery 调用 Oracle 存储过程

    我需要使用 JPA 调用存储过程并找到这篇文章 http www oracle com technology pub articles vasiliev jpql html http www oracle com technology pu
  • Oracle中如何检测4字节UTF8字符

    我们已经看到oracle中存储了4字节的UTF 8字符 我们需要检测特定列中有多少行包含此类字符 尝试了这里给出的建议 UTF 16 补充字符 https stackoverflow com questions 34720830 how t
  • 在 jdbc 程序中使用时,通过 SQL 客户端插入表中的记录未显示

    我使用 SQL 客户端和 JDBC 程序将几行插入到我的表 EMP 中 使用 SQL 客户端插入的记录不会显示在 Java 的输出控制台中 我正在使用 Java 8 和 oracle 11g 数据库来插入和读取数据库 除了通过 SQL 客户
  • 如何从 TOAD for Oracle 执行函数并将结果绑定到数据网格

    我有一个函数 它将 pl sql 对象的 VARRAY 作为其参数之一 如何执行此存储过程并将其返回的结果集绑定到 TOAD for Oracle 中的数据网格 经过一番搜索后 我找到了自己问题的答案 假设您的 varray 类型称为 va
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • REgex从oracle中的字符串中获取数字

    我有以下格式的字符串 阿克拉姆 88 jamesstree 20140418 阿克兰 8 约翰街 20140418 阿克兰 888 johnstreet 20140418 现在我只想检索 88 8 和 888 值 我为此编写了以下查询 SU
  • Pivotal Cloud Foundry - 连接到外部 Oracle 数据库

    我正在创建一个 Spring boot 应用程序 该应用程序连接到一个不由 PCF 管理 或驻留在外部 的 Oracle 数据库 在我的本地开发环境中 我在 application properties 文件中配置了数据库连接详细信息 有人
  • 错误 38824:CREATE 或 REPLACE 命令可能无法更改现有对象的 EDITIONABLE 属性

    我们正在实现数据库生产对象 如包 过程 触发器等 的单元测试系统 为此 我们有一个容器来创建数据库https github com oracle docker images tree master OracleDatabase https
  • 我怎样才能知道oracle 9i中哪些值是数字

    我有这个包含 varchar 的数据库 我想知道哪些记录保存数值 我试过REGEXP COUNT和其他 但我在 9i 上运行 我认为这是针对 10g gt 我怎样才能实现这个目标 I tried select to number my co
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i

随机推荐

  • Ruby - 找到哈希值最大值的键

    我有一个散列 我想返回散列最大值的键 或键 值对 因此 如果只有一个真正的最大值 它将返回该键 但是 如果有多个具有相同值的键 值对 它将返回所有这些键 我怎样才能在 Ruby 中完成这个任务 my hash max by k v v on
  • psycopg2 - 插入整数数组

    我正在使用 Postgres 9 2 Python 2 7 3 psycopg2 2 5 1 我有一个表 其中一个字段声明为 some field int NOT NULL 我需要插入一些数据 所以我正在做这样的事情 cursor exec
  • 使用 1D 数组绘制 2D 绘图,无需 griddata()

    我正在尝试使用绘制两个变量的函数matplotlib 该函数存储在三个一维数组中X Y and F对应x坐标 y坐标和函数值 是否可以将这些数据绘制为等高线图 在我看到解决方案之前griddata 但我想避免插值 因为 x 和 y 坐标已经
  • 将非 bat 扩展文件作为批处理文件运行

    假设我有一个文本文件 它包含批处理命令 我怎样才能从一个文本文件中将其作为批处理文件运行 without重命名它 我也想保留它的可移植性 所以没有注册表项之类的 不重命名的原因是为了防止意外关闭时留下未重命名的文件 最简单的方法是这样的 c
  • IE bug 源 HTML5 音频无效 - 解决方法

    我 和大约一百万人 在 IE11 中发现了一个错误 不确定其他版本是否有相同的错误 如果您创建 HTML5 音频标签 浏览器无论如何都会报告 无效源 我已经尝试了所有我能想到的组合 但没有成功 迄今为止 将 HTML 结束标记从自闭更改为显
  • Mongo_mapper限制结果

    我有一个这样的查询 allJobs Job where merchant id gt session admin id to s sort start date desc limit 100 当我对此运行 count 时 我得到 jobs
  • 对于基于 Sandy Bridge 的 Pentium,正确的特定于体系结构的选项 (-m) 是什么?

    我正在尝试弄清楚如何设置 march正确地查看在使用 gcc 4 7 2 的 PC 上启用和禁用选项之间会出现多少性能差异 在尝试编译之前 我试图找到最好的 march我的电脑的选项 我的电脑有Pentium G850 其架构是Sandy
  • 如何获取旋转的线性渐变 svg 用作背景图像?

    我看到了一些围绕这个问题的问题 所以我希望这不是太多余 理想情况下 我想要一个image svg xml它可以扩展到容器的 100 彩色西拉 http www colorzilla gradient editor让我有一个良好的开端data
  • Visual Studio 2010 intellisense for KnockoutJS inside RequireJS

    我想在 Visual Studio 2010 中获得智能感知 用于淘汰 JS 经过一番研究后我得到的是 reference path lib knockout knockout 2 3 0 debug js gt ko WeGotIntel
  • Rails 4 和 Ruby 2 Net/HTTP SSL 请求:OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: 未知协议

    这几乎是以下内容的重复 SSL connect 返回 1 errno 0 状态 SSLv3 读取服务器证书 B 证书验证失败 https stackoverflow com questions 4528101 ssl connect ret
  • 水晶报表中从右到左的字符串

    考虑 SQL Server 中的以下查询 下图是水晶报表中查询的结果 正如你所看到的 右侧部分与sql server中的查询结果完全相同 左侧部分通过锁定函数进行转换 以满足波斯语从右到左的属性 我需要获得这个功能 首先 你需要重写你的sq
  • X11 非剪裁子窗口

    X 有非裁剪子窗口的概念吗 中的行为 Windows 和 OSX 的这些是 父母总是站在孩子后面 当父项关闭时 子项也会自动关闭 孩子们在移动时跟随父母 如果答案是否定的 那么我可以模拟 2 和 3 但是 1 怎么样 Thanks Cosm
  • 猫鼬有 isDirty 检查吗?

    我有一个涉及嵌入式模式的猫鼬设置 可以说 带有嵌入式评论的博客文章 评论可以由原始发布者以及编辑 管理员编辑 添加 编辑评论后 整个博客文章将被保存 我在嵌入式评论模式上设置了一些自定义猫鼬的 预 中间件 它会自动设置该特定评论的laste
  • 驱动程序可执行文件必须由 webdriver.ie.driver 系统属性设置

    我正在使用 Selenium 来自动化测试 我的应用程序仅使用 IE 它无法在其他浏览器上运行 Code import org openqa selenium ie InternetExplorerDriver import org ope
  • Firebase onAuthStateChanged 始终返回未定义

    我一直在尝试创建一个 util 方法 该方法将返回用户对象或用户对象是否存在 如果没有参数 它应该返回一个布尔值 如果有参数 getUser 它应该返回用户对象 但它总是返回未定义的 这似乎工作了一段时间 但后来我休息了一下 回来时它总是返
  • 在 NodeJS 中安排异步函数

    我想安排一个异步函数 异步 等待返回类型 每两分钟运行一次 我尝试使用通用setInterval 节点模块如节点计划 cron 节点计划 异步轮询但无法实现异步函数调用的轮询 这是我在代码中尝试过的 cron schedule 2 awai
  • 使用 create-react-app 时出现“未捕获的引用错误:jQuery 未定义”

    正在使用构建 React 应用程序创建反应应用程序 https github com facebookincubator create react app所以该应用程序已准备好服务器 当导入引导 javascript 插件 例如 affix
  • Android 中的日期验证

    我是 Android 编程新手 目前正在开发一个应用程序 有人可以帮助我如何验证用户输入的日期是否有效 private Pattern pattern private Matcher matcher private static final
  • 如何在 PHP 中下载现有文件

    我的服务器上有一个 pdf 文件 我想创建这样的链接 用户可以单击它并下载该 pdf 文件 我正在使用 Zend 框架与 Php 一起工作 将此代码放入 php 文件中并将其命名为 f e 下载 php
  • 当执行计划中存在“PARTITION LIST SUBQUERY”时,某些内容(错误?)会取消实例化包

    这是 Oracle 12c 的错误吗 我在 Oracle Linux 上运行 64 位 Oracle 12 1 0 2 遇到一件奇怪的事情 当执行计划切换到使用 PARTITION LIST SUBQUERY 时 受影响的查询中使用的包将丢