标签: oracle11g

删除自动生成的约束名称

我有一个自动生成的主键约束。其实关键是错的。它应该反对两列,而目前它反对一列。我需要在多个数据库上运行此脚本,因此每个数据库的约束名称可能不同。我需要获取约束名称,然后删除它,然后创建新的主键。

这是我到目前为止的脚本

DECLARE
con_name VARCHAR(255);

BEGIN

select constraint_name into con_name from all_constraints where table_name = 'MY_TABLE' and constraint_type = 'P';

EXECUTE immediate 'ALTER TABLE MY_TABLE drop constraint con_name';

EXECUTE immediate 'ALTER TABLE MY_TABLE ADD CONSTRAINT MT_PK PRIMARY KEY (REV, ID)';

COMMIT;
/
EXIT;
Run Code Online (Sandbox Code Playgroud)

但是我有一个问题,我认为它试图删除 con_name 而不是该变量中的值。

Error on script: Error number: -2443, Error Message: ORA-02443: Cannot drop constraint  - nonexistent constraint
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?我基本上需要把pk放到这个表里。还有其他方法吗,或者我的方法是否正确。

谢谢

oracle oracle11g

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

在 Oracle“AS”别名中不起作用

只是想知道为什么 Oracle 不允许在查询中使用“AS”别名。在我的项目中,我返回的所有查询都有别名关键字“AS”。

例如;

Select t1.id,t2.name from Table1 As t1 ,Table2 t2 
on
  t1.id =t2.id
Run Code Online (Sandbox Code Playgroud)

上面的查询在所有服务器(如 PostgreSQL、Microsoft SQL 服务器)中运行,但在 Oracle 中由于别名“As”而无法工作,显示错误“命令不存在”。如果我删除它就会运行。

只是想知道为什么 Oracle Server 会这样?我想使用“AS”别名运行查询。

oracle oracle11g

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

使用pl/sql从文本文件读取文件

我想读取文本文件,将其存储在变量中并在 pl/sql 中输出该变量。我正在使用以下代码,但出现错误:语句被忽略。

create or replace PROCEDURE blah
AS
DECLARE
f UTL_FILE.FILE_TYPE;
s VARCHAR2(200);
BEGIN
f := UTL_FILE.FOPEN('C:\Users\s420105\Music','blahh.txt','R');
UTL_FILE.GET_LINE(f,s);
UTL_FILE.FCLOSE(f);
dbms_output.put_line(s);
END;
Run Code Online (Sandbox Code Playgroud)

我不确定 UTL 权限,但我想如果是由于 UTL 权限,它会抛出不同的错误。这

oracle plsql oracle11g plsqldeveloper

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

如何在选项卡内添加分页

我是 Laravel 5.2 的新手。我只是想问一下如何在标签内添加分页。在我的界面中有 5 个选项卡,每个选项卡显示数据库中单独的 5 个表。我使用的数据库是oracle。在我的界面中,我为第一个选项卡添加了分页,并且成功运行。(我添加了 simplepagination 方法)

但是,当我向第二个选项卡分页添加相同的方法时,当我单击该分页上的下一个按钮时,它定向到第一个选项卡的第二页,而不是第二个选项卡的第二页。如果有人能帮助我解决这个问题,我将非常感激

谢谢

javascript php bootstrapping oracle11g laravel

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

是否可以在 from 子句用例中使用 when 语句

我正在尝试执行下一个查询:

select * from (case when :p1 = '1' then t1 when :p1=2 then t2);
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我假设 from 子句中不允许使用 when 语句?有没有其他方法可以解决这个问题。谢谢

oracle11g oracle-sqldeveloper

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

Oracle 星期几(无字符串比较)

我会在前面说我发现的所有文档都不适用于我的 Oracle 版本: https: //docs.oracle.com/cd/E51711_01/DR/WeekDay.htmlhttps://docs.oracle.com/cd/E37483_01/server.751/es_eql/src/ceql_functions_date_extract.html

或者我可以使用的函数参考不要提及星期几: https ://docs.oracle.com/cd/B28359_01/server.111/b28286/functions052.htm#SQLRF00639

所以我只是想办法使用to_char来做到这一点,然后进行 varchar2 比较。如果可能的话,我想坚持使用日期格式。

到目前为止这是我的sql

select dateSold from sales
where extract(dateSold, day_of_week) in (1, 3, 4, 7)

SQL Error: ORA-00904: "DAY_OF_WEEK": invalid identifier
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

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

Oracle null 值有时符合任何规则

有谁知道为什么有时甲骨文对null价值观有奇怪的行为?

例如,当我选择以下查询时,第一行被排除,但 null 显然不像“Test”字符串:

SELECT A.NAME FROM (
    SELECT NULL AS NAME FROM DUAL
    UNION SELECT 'Name 1' AS NAME FROM DUAL
    UNION SELECT 'Name 2' AS NAME FROM DUAL
    UNION SELECT 'Name 3' AS NAME FROM DUAL
    UNION SELECT 'Name 4' AS NAME FROM DUAL
    UNION SELECT 'Name 5' AS NAME FROM DUAL
) A WHERE UPPER(A.NAME) NOT LIKE UPPER('Test') --THIS RULE EXCLUDE DE FIRST ROW WITH NAME NULL NULL NAME
Run Code Online (Sandbox Code Playgroud)

我使用的是 Oracle 版本 11:

Oracle Database …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

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

ORACLE SQL 获取 Distincts 的方法是什么

我试图更好地理解 Oracle SQL 在执行代码时如何确定不同值。我希望它一次只对一列起作用,然后将所有重复项放在一边,然后仅在这些行上比较下一列。这将通过验证下一列是否有任何重复项来继续,并且每次只有继续具有重复项的行才会进入下一步。这准确吗?此外,是否有一种方法可以用来确定从哪一列开始?有些列很可能有重复项,而其他列可能是不应包含任何重复项的键(假设联接或联合上没有发生重复)。

sql oracle oracle11g

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

使用 substr 和 like 运算符的区别

SELECT SUBSTR(gram_panchayat,1,6) GP FROM tw_master WHERE gram_panchayat LIKE 'B%';

SELECT gram_panchayat FROM tw_master WHERE gram_panchayat LIKE 'B_____';
Run Code Online (Sandbox Code Playgroud)

这两个选择语句有什么区别。

sql oracle oracle11g

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

Oracle:过程中 INTO 变量中存在多行

我的程序看起来像这样。

CREATE OR REPLACE PROCEDURE USP_TMS_OPT_DATA
AS

V_NAME           VARCHAR2(10);
V_TEL_NO         VARCHAR2(10);
V_ADDR           VARCHAR2(10);
...

SELECT NEW_NAME
     , NEW_TEL_NO
     , NEW_ADDR
     , REG_NO
  INTO V_NAME     -- get data row. but it is error.
     , V_TEL_NO
     , V_ADDR  
     , V_REG_NO
  FROM DAILY_VISITOR;
  
  MERGE  -- I use MERGE, because INSERT or UPDATE
  INTO ALL_VISITOR A
  USING dual
    ON (A.REG_NO = V_REG_NO)
  WHEN MATCHED THEN
       UPDATE
          SET A.ADDR = V_ADDR
            , A.NAME = V_NAME
            , A.TEL_NO = V_TEL_NO
  WHEN NOT MATCHED THEN
       INSERT (REG_NO, …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g

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