如果我在pl/sql开发人员中对数据库表执行一个简单的select语句,我会得到一组标准的结果,如我所料.
最近,我从一个恰好从视图中选择的存储过程粘贴了一个查询,并注意到一个事务似乎保持打开状态.PL/SQL开发人员可以使用回滚和提交选项.
对其他开发人员的调查显示,这似乎影响了一些但不影响其他人,这导致我怀疑PL/SQL Developer设置.
为什么会这样呢?视图itelf有一个DBLink到另一个数据库,但我不希望这会产生任何影响.
有什么想法吗?
我目前尝试在Oracle DB上执行以下查询
select tzname || ' (UTC'|| tz_offset(tzname) || ')' from v$timezone_names
Run Code Online (Sandbox Code Playgroud)
它似乎并不复杂.只是timzone的名称和大括号中的UTC偏移量.但是当我在Windows上使用PL/SQL Developer执行查询时,它总是会吃掉最后一个大括号.
所以我去了sqlplus并在那里执行了,现在我得到了我的最后一个大括号,但在最后一个大括号之前还有一个额外的空格作为额外的好东西.
我和嵌套尝试过to_char()和trim(),但没有改变.我也尝试过不同的DB,但它总是一样的.
有人知道是否存在tz_offset字符串连接问题?
如何在PL/SQL Developer中更改所有外观和颜色?因为在当前时间,很难以黑色全部工作!
我有一个函数,计算大字符串的哈希值!首先,我写了一个游标T1_CUT,它可以包含SELECT语句的变量计数,如:
SELECT T1.COL1||T1.COL2||...||T1.COLn FROM T1 WHERE id=documentid
SELECT T2.COL1||T2.COL2||...||T2.COLn FROM T2 WHERE id=documentid
...
SELECT Tn.COL1||Tn.COL2||...||Tn.COLn FROM Tn WHERE id=documentid
Run Code Online (Sandbox Code Playgroud)
每个SELECT都可以包含一行或多行.因此,我将每个SELECT和ALL SELECTs值中的所有值连接在一个大字符串V_RESULT中,类型为VARCHAR2(32767).之后,我使用MD5得到这个大字符串的哈希值(S_HASH_RESULT).它工作正常约8个月,但几天前我有ORA-06502(毫不奇怪).这意味着,我的最后一个大字符串有超过32K符号(我们使用1字节字符集--CL8MSWIN1251).
朋友们,我怎样才能重写我的函数,将BLOB数据类型用于V_RESULT变量,而不是VARCHAR2(32767).
下面是我的功能文字:
FUNCTION CALC_HASH (P_PARTAB_ID IN NUMBER, P_DOC_ID IN NUMBER)
RETURN VARCHAR2
IS
S_HASH_RESULT VARCHAR2(1000);
V_RESULT VARCHAR2(32767);
CURSOR T1_CUT IS
...
/*BIG COMPLAIN SELECT*/
...
T1 T1_CUT%ROWTYPE;
TYPE VALUES_T IS TABLE OF VARCHAR2(32767);
L_VALUES VALUES_T;
BEGIN
OPEN T1_CUT;
FETCH T1_CUT INTO T1;
WHILE T1_CUT%FOUND
LOOP
EXECUTE IMMEDIATE
T1.TEXT
BULK COLLECT INTO L_VALUES;
FOR INDX IN 1 .. L_VALUES.COUNT …Run Code Online (Sandbox Code Playgroud) 我查看了一些PL/SQL代码,我在脚本中遇到了以下内容:
/
SHOW error
grant execute on someName1 to someName2;
/
SHOW error
Run Code Online (Sandbox Code Playgroud)
查看PL/SQL的文档我无法找到/解释的内容.
任何人都可以开导我吗?
是否有一些标记或命令会在plsqldeveloper中折叠我的代码区域; 在netBeans for java中,我使用:
<editor-fold desc="description" default-state="collapsed">
Run Code Online (Sandbox Code Playgroud)
如果我的记忆在c#中是正确的:
#region;
Run Code Online (Sandbox Code Playgroud) 我在SQL索引创建中犯了一个可怕的错误:
create index IDX_DATA_TABLE_CUSECO on DATA_TABLE (CUSTOMER_ID, SESSION_ID, CONTACT_ID)
tablespace IDX_TABLESPACE LOCAL ;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我错过了关键字"ONLINE"来创建索引而不会阻止具有600m +记录的高使用率的PRODUCTION表.更正的SQL是:
create index IDX_DATA_TABLE_CUSECO on DATA_TABLE (CUSTOMER_ID, SESSION_ID, CONTACT_ID)
tablespace IDX_TABLESPACE LOCAL ONLINE;
Run Code Online (Sandbox Code Playgroud)
我是在PL/SQL Developer下完成的.当我试图阻止程序停止响应并崩溃.
生产系统现在不工作9个小时,我的老板想要爆炸.:d
有没有机会看到Oracle 11g离开多少秒/分钟/小时来处理这个索引创建?或者也许有机会看到Oracle仍在处理此请求吗?(PL/SQL Developer崩溃).
仇恨者:我知道我应该像这里提到的那样:( 来源)
CREATE INDEX cust_idx on customer(id) UNUSABLE LOCAL;
ALTER INDEX cust_idx REBUILD parallel 6 NOLOGGING ONLINE;
Run Code Online (Sandbox Code Playgroud)
我有这个关联数组3-d
type v_arr_class is table of varchar2(255) index by varchar2(255);
type v_arr_component is table of v_arr_class index by varchar2(255);
type v_arr_property is table of v_arr_component index by varchar2(255);
v_arr_local_rec v_arr_property;
Run Code Online (Sandbox Code Playgroud)
我需要验证索引是否存在
if(v_arr_local_rec('class')('component')('property') exist) then
do this...
end if
Run Code Online (Sandbox Code Playgroud)
没有太多关于找到的关联数组的信息.
提前致谢.
如何从 all_views 获取各个视图的总记录数。请找到以下代码以供参考..
Declare
view_name VARCHAR2(200);
v_str VARCHAR2 (1000);
v_output VARCHAR2(4000);
CURSOR tbl IS
SELECT view_name
FROM all_views
WHERE OWNER = SYS_CONTEXT( 'USERENV', 'CURRENT_SCHEMA')
ORDER BY 1 ;
BEGIN
OPEN tbl ;
LOOP
FETCH tbl INTO view_name;
EXIT WHEN tbl%NOTFOUND;
v_str := 'Select '''|| view_name ||' '' || count (*) from ' || view_name ;
EXECUTE IMMEDIATE v_str INTO v_output;
DBMS_OUTPUT.PUT_LINE(v_output);
END LOOP;
CLOSE tbl;
END;
Run Code Online (Sandbox Code Playgroud)
电流输出:
V_DSP_BUSINESS_DATE 10
V_DSP_DEPARTMENT 20
V_DSP_EMPLOYEE_DEACTIVATED 50
V_DSP_EMPLOYEE_GED 80
Run Code Online (Sandbox Code Playgroud)
预期输出:
sum up the record …Run Code Online (Sandbox Code Playgroud) Declare
var_cnt number(3):=0;
begin
loop
update t_loan_dtl set loan_closure = 'Y' where rownum <10001;
end loop;
end;
Run Code Online (Sandbox Code Playgroud)