我正在使用Oracle SQL(在SQLDeveloper中,使用SQL Worksheet).我想在我的选择之前打印一个声明,例如
PRINT 'Querying Table1';
SELECT * from Table1;
Run Code Online (Sandbox Code Playgroud)
我可以用什么来打印/显示文本输出?这不是打印,因为这给了我错误:绑定变量Table1
未声明.DBMS_OUTPUT.PUT_LINE是一个未知命令.(显然,我是一个没有经验的SQLDeveloper和Oracle用户.必须有一些Print的同义词,但我很难在不知道它的情况下找到它的帮助.)
前言
最近,我看到有太多的极客评论Oracle的问题,说"不要使用(+)运算符,而是使用JOIN语法".
题
我确实看到两者都运作良好.但是使用它们之间的真正区别是什么让你觉得使用它们?我希望得到答案,更多来自经验.
1. Is there anything to do with limitations in application, performance,
etc. while using them?
2. What would you suggest for me?
Run Code Online (Sandbox Code Playgroud)
我确实阅读了有关Oracle文档的内容,但还不足以让我理解或对综合信息感到满意.
注意:如果要使用关键字而不是(+),我打算迁移200多个包和程序
3. Also is there any freeware tools to do the rewrite?
Run Code Online (Sandbox Code Playgroud)
发布样本
???????????????????????????????????????????????????????????????????????????????????
? INNER JOIN - CONVENTIONAL ? INNER JOIN - ANSI SYNTAX ?
???????????????????????????????????????????????????????????????????????????????????
? SELECT ? SELECT ?
? emp.deptno ? ename, ?
? FROM ? dname, ?
? emp, ? emp.deptno, ?
? dept ? …
Run Code Online (Sandbox Code Playgroud) C#Convert.ToDecimal(string)
和Decimal.Parse(string)
?之间有什么区别?
在什么情况下你会使用一个而不是另一个?
它对性能有何影响?
在两者之间进行选择时,我应该考虑哪些其他因素?
我执行了一个创建下表的PL/SQL脚本
TABLE_NAME VARCHAR2(30) := 'B2BOWNER.SSC_Page_Map';
Run Code Online (Sandbox Code Playgroud)
我使用参数为这个表创建了一个insert函数
CREATE OR REPLACE FUNCTION F_SSC_Page_Map_Insert(
p_page_id IN B2BOWNER.SSC_Page_Map.Page_ID_NBR%TYPE,
p_page_type IN B2BOWNER.SSC_Page_Map.Page_Type%TYPE,
p_page_dcpn IN B2BOWNER.SSC_Page_Map.Page_Dcpn%TYPE)
Run Code Online (Sandbox Code Playgroud)
我被通知我必须B2BOWNER.SSC_Page_Map
在它出现作为我的函数的参数之前声明.为什么我收到此错误?
编辑:实际错误
Warning: compiled but with compilation errors
Errors for FUNCTION F_SSC_PAGE_MAP_INSERT
LINE/COL ERROR
-------- -----------------------------------------------------------------
2/48 PLS-00201: identifier 'SSC_PAGE_MAP.PAGE_ID_NBR' must be declared
0/0 PL/SQL: Compilation unit analysis terminated
Run Code Online (Sandbox Code Playgroud)
编辑:完整的PL/SQL函数
RETURN INTEGER
IS
TABLE_DOES_NOT_EXIST exception;
PRAGMA EXCEPTION_INIT(TABLE_DOES_NOT_EXIST, -942); -- ORA-00942
BEGIN
INSERT INTO
B2BOWNER.SSC_Page_Map VALUES(
p_page_id,
p_page_type,
p_page_dcpn);
RETURN 0;
EXCEPTION
WHEN TABLE_DOES_NOT_EXIST THEN
RETURN -1; …
Run Code Online (Sandbox Code Playgroud) 我刚刚发现了我认为在Oracle中PLSQL vs SQL中有些出乎意料的行为.
如果我在SQLDeveloper上运行此查询,我得到5个结果:
select level lvl from dual connect by level <=5;
Run Code Online (Sandbox Code Playgroud)
但是,如果我在SQLDeveloper中运行此语句:
declare
w_counter number :=0;
begin
for REC in (select level lvl from dual connect by level <=5)
loop
w_counter := w_counter+1;
end loop;
dbms_output.put_line('W_COUNTER: '|| w_counter);
end;
Run Code Online (Sandbox Code Playgroud)
变量w_counter以值1结束(很奇怪)
但最奇怪的部分是,如果我将查询封装在子查询中...类似于:
declare
w_counter number :=0;
begin
for REC in (select * from (select level lvl from dual connect by level <=5))
loop
w_counter := w_counter+1;
end loop;
dbms_output.put_line('W_COUNTER: '|| w_counter);
end;
Run Code Online (Sandbox Code Playgroud)
该w_counter变量完成与价值5 ...
你有什么要对此说的? …
我有一个数据表详细说明父表的行的动作序列,其中列ID是该外键.列SEQ是这些动作发生的顺序,ACTION是发生的动作.
ID SEQ ACTION
12345.00 2 SUSPEND
12345.00 3 CLEAR
12345.00 4 SUSPEND
12345.00 6 CLEAR
12345.00 7 SUSPEND
12345.00 8 RESUME
12345.00 9 SUSPEND
12345.00 10 RESUME
12345.00 11 CLEAR
Run Code Online (Sandbox Code Playgroud)
我试图以这样的方式呈现数据,以便我可以识别未清除的SUSPEND和RESUME操作.在这种情况下,我的结果将如下所示;
12345.00 7 SUSPEND 8 RESUME
12345.00 9 SUSPEND
Run Code Online (Sandbox Code Playgroud)
情况就是这样;
CLEAR行动3删除了SUSPEND行动2.
CLEAR行动6删除了SUSPEND行动4.
CLEAR动作9删除了RESUME动作8.
ACTION列可以在序列中包含其他操作,因此为了清楚起见,我已删除了这些操作.
如果CLEAR将继续执行操作,则清除该操作.
对不起,如果这令人困惑.我无法改变架构!
我试图简化这个问题;
ID SEQ ACTION
12345.00 2 SUSPEND
12345.00 3 RESUME
12345.00 4 CLEAR
12345.00 5 RESUME
12345.00 6 SUSPEND
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的;
12345.00 2 SUSPEND 5 RESUME
12345.00 6 SUSPEND
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法,但我无法想象如何停止包含3号的RESUME.
我想mvvm
在java上创建一个项目.但我找不到一个示例项目.有几个Android示例,但我不想制作Android项目.那么如何用mvvm
模式创建项目呢?
我正在尝试创建一个桌面应用程序,其中有组合框和数据网格.应用程序必须连接到数据库(即MySQL),数据网格必须填充数据.组合框上的任何更改都必须更改网格的内容.也许我想CRUD
在以后的步骤中进行操作.
所以任何建议......
我有一个有几百个分区的表,我一般对最新的35个感兴趣.
因此,我正在尝试创建可以动态访问这些视图的视图.即总是使用最新的,以防万一.
查询:
select PARTITION_NAME,
PARTITION_POSITION,
NUM_ROWS,
AVG_ROW_LEN
from all_tab_partitions
where
table_name = 'MY_TABLE'
AND PARTITION_NAME <> 'P_LAST'
AND PARTITION_POSITION < (SELECT MAX(PARTITION_POSITION)
FROM all_tab_partitions) - 35
order by 2 DESC
;
Run Code Online (Sandbox Code Playgroud)
似乎返回我感兴趣的分区名称,但是,我无法使用它的结果来选择分区.例如:
CREATE OR REPLACE VIEW MY_VIIEW AS
WITH t AS ( [Above query] )
SELECT * FROM
MY_TABLE PARTITION (SELECT /*+ FIRST_ROWS(1) */ PARTITION_NAME
from t);
Run Code Online (Sandbox Code Playgroud)
(不是实际视图,只是一个例子)
那我该怎么做?如何创建一个始终是最新分区(execpt为"MAX")的视图?
我正在使用Oracle 10g
谢谢
我正在使用oracle 11g和SQL开发人员工具.当我试图从数据库中检索行时,我收到错误消息: -
ORA-01219: database not open: queries allowed on fixed tables/views only)
Run Code Online (Sandbox Code Playgroud)
我找了sgadef.dbf文件,它在主目录中丢失了..有人可以帮助我让它工作.