我有一个像这样的查询:
SELECT column as averyveryveryverylongalias (more than 30 characters)
FROM Table_name
Run Code Online (Sandbox Code Playgroud)
它返回错误ORA-00972标识符太长,是否有任何提示使其工作而不使别名更短?
谢谢
我有一个程序,填写表格以下的SQL
SELECT NVL(SUM(COL1), 0),
NVL(SUM(COL2), 0)
INTO v_mytable.COLUMN1,
v_mytable.COLUMN2
FROM t1, t2
WHERE t1.id = t2.id
AND t1.date = t2.date
Run Code Online (Sandbox Code Playgroud)
此外,对于99%的表行,这些列= 0,并且在大多数情况下,当两个列都返回0时,此查询需要很长时间才能执行.
是否更好地使用异常处理如下:
BEGIN
SELECT SUM(COL1),
SUM(COL2)
INTO v_mytable.COLUMN1,
v_mytable.COLUMN2
FROM t1, t2
WHERE t1.id = t2.id
AND t1.date = t2.date
EXCEPTION WHEN NO_DATA_FOUND THEN
v_mytable.COLUMN1 := 0 ;
v_mytable.COLUMN2 := 0 ;
END;
Run Code Online (Sandbox Code Playgroud)
谢谢.
我在DEV服务器上有一个MVIEW
CREATE MATERIALIZED VIEW MY_MVIEW
AS
SELECT col1 AS "N° INVOICE" from TABLE
Run Code Online (Sandbox Code Playgroud)
MVIEW已经安装在PROD服务器上,当我检查它的查询时,我°没有识别出characther
SELECT query from user_mviews where mview_name = 'MY_MVIEW' ;
QUERY
---------------------------------------
SELECT col1 AS "N? INVOICE" from TABLE
Run Code Online (Sandbox Code Playgroud)
我们Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
用于两种环境.
知道为什么会这样,以及如何纠正它?或者我需要重命名我的别名?
我有一个类似如下的XML文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<mylist name="test">
<title>--$title$- not found</title>
<table>
<header>
<col name="firstname" title="--$firstname$- not found"/>
<col name="lastname" title="--$lastname$- not found"/>
<col name="country" title="--$country$- not found"/>
</header>
<body>
<row>
<col name="firstname">John</col>
<col name="lastname">Smith</col>
<col name="country">ENGLAND</col>
</row>
<row>
<col name="firstname">Peter</col>
<col name="lastname">Scott</col>
<col name="country">USA</col>
</row>
</body>
</table>
</mylist>
Run Code Online (Sandbox Code Playgroud)
我需要将结果显示为HTML表格,如下所示:

有人可以帮忙吗?我没有进入XML/XSL,我只需要一次
如果我想要一年中的一天,我正在使用Select datepart(dayofyear , getdate()).
此查询将返回系统日期的年份.所以该值将介于1到365/366之间.现在我想回到半年的那一天.让我们假设我们有12个月,我们把它分成两部分,所以它将是1月到6月和7月到12月.现在如果我的系统日期是7月1日它应该返回1,因为7月1日是半年的开始日.请帮我解决这个问题.
我有一个使用 MERGE 的 PL/SQL 过程:
MERGE INTO
table_dest d
USING
(SELECT * FROM my_Table) s
ON
(s.id = d.id)
when matched then UPDATE set d.col1 = s.col1
when not matched then INSERT (id, col1) values (s.id, s.col1);
Run Code Online (Sandbox Code Playgroud)
现在假设查询s返回具有相同 id 的多行,这将返回ORA-00001: unique constrain 错误
我想要做的是将重复的列发送到另一个表my_Table_recyledbin以获得成功的 INSERT,我可以使用吗EXCEPTION WHEN DUP_VAL_ON_INDEX?如果是,如何将其与 MERGE 语句一起使用?
提前致谢
我连接到Oracle 10g数据库与用户"用户",当我上DBA_ROLES运行选择它显示结果而没有任何问题,但是当选择是一个过程内则返回错误ORA-00942:表或视图不存在
用户是否缺少某些特权?为什么可以执行SELECT而不是将其包含在过程中?
SQL> SELECT COUNT(*) FROM DBA_ROLES;
COUNT(*)
----------
18
SQL> CREATE OR REPLACE PROCEDURE tst_role IS
v VARCHAR2(100);
BEGIN
v := '';
FOR rec IN (SELECT ROLE FROM DBA_ROLES) LOOP
v := rec.role;
DBMS_OUTPUT.put_line(v);
END LOOP;
END;
/
Warning: Procedure created with compilation errors.
SQL> show errors
Errors for PROCEDURE TST_ROLE:
LINE/COL ERROR
-------- -----------------------------------------------------------------
5/13 PL/SQL: SQL Statement ignored
5/30 PL/SQL: ORA-00942: table or view does not exist
6/3 PL/SQL: Statement ignored
6/8 PLS-00364: loop index …Run Code Online (Sandbox Code Playgroud) oracle ×6
sql ×6
alias ×1
html ×1
html-table ×1
merge ×1
ora-00001 ×1
oracle11g ×1
performance ×1
plsql ×1
privileges ×1
sql-server ×1
xml ×1
xslt ×1