小编mch*_*cha的帖子

ORA-00972标识符的别名列名太长

我有一个像这样的查询:

SELECT column as averyveryveryverylongalias (more than 30 characters)
   FROM Table_name
Run Code Online (Sandbox Code Playgroud)

它返回错误ORA-00972标识符太长,是否有任何提示使其工作而不使别名更短?

谢谢

sql oracle alias

68
推荐指数
4
解决办法
21万
查看次数

CASE与DECODE

参照以前的问题,我想知道如果它总是能够替代DECODECASE,哪一个是获得更好的性能?

sql oracle

35
推荐指数
2
解决办法
7万
查看次数

NVL或EXCEPTION NO_DATA_FOUND

我有一个程序,填写表格以下的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)

谢谢.

sql oracle performance plsql exception-handling

3
推荐指数
1
解决办法
6484
查看次数

Oracle字符编码

我在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 用于两种环境.

知道为什么会这样,以及如何纠正它?或者我需要重命名我的别名?

oracle character-encoding special-characters oracle11g

3
推荐指数
1
解决办法
5967
查看次数

简单的XML到HTML表格

我有一个类似如下的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,我只需要一次

html xml xslt html-table

2
推荐指数
1
解决办法
143
查看次数

我想在sql server中检索半年的那一天

如果我想要一年中的一天,我正在使用Select datepart(dayofyear , getdate()).

此查询将返回系统日期的年份.所以该值将介于1到365/366之间.现在我想回到半年的那一天.让我们假设我们有12个月,我们把它分成两部分,所以它将是1月到6月和7月到12月.现在如果我的系统日期是7月1日它应该返回1,因为7月1日是半年的开始日.请帮我解决这个问题.

sql sql-server

2
推荐指数
1
解决办法
3418
查看次数

MERGE - 不匹配时 INSERT 的异常

我有一个使用 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 语句一起使用?

提前致谢

sql oracle merge ora-00001

1
推荐指数
1
解决办法
5万
查看次数

Oracle对DBA_ROLES的选择权限

我连接到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)

sql oracle privileges database-administration

1
推荐指数
1
解决办法
6159
查看次数