javascript

java

python

c#

android

c++

node.js

php

reactjs

jquery

html

css

ios

.net

git

ruby-on-rails

sql

c

string

ruby

oracle-SQL生成从1到100的数字列表

使用DUAL表,如何获得1到100的数字列表?

trans by 2020-07-08T14:54:15Z

oracle-如何将DBMS_OUTPUT.PUT_LINE的输出重定向到文件?

我需要在pl / sql中进行调试以计算过程次数,我想使用:

SELECT systimestamp FROM dual INTO time_db;
DBMS_OUTPUT.PUT_LINE('time before procedure ' || time_db);

但我不知道输出将到达何处,以及如何将其重定向到包含我要收集的所有数据的日志文件?

trans by 2020-07-06T02:11:10Z

plsql-如何执行oracle存储过程?

我正在使用Oracle 10g Express Edition。 它为数据库开发人员提供了一个不错的用户界面。 但是我在执行存储过程时遇到了一些问题。

程序:

create or replace procedure temp_proc is
begin
  DBMS_OUTPUT.PUT_LINE('Test');
end

它创建成功。 但是当我执行时:

execute temp_proc;

它显示ORA-00900:无效的SQL语句

所以这里需要帮助

trans by 2020-07-03T02:30:51Z

如何从存储过程返回多行? (Oracle PL / SQL)

我想用一个参数创建一个存储过程,该存储过程将根据参数返回不同的记录集。 这是怎么做的? 我可以从普通SQL中调用它吗?

trans by 2020-06-30T04:26:53Z

plsql-不同的CURRENT_TIMESTAMP和SYSDATE在

在oracle 10g中执行此SQL之后:

SELECT SYSDATE, CURRENT_TIMESTAMP  FROM DUAL

我收到以下奇怪的输出:Toad output for query

时间差异的原因是什么?服务器时间等于SYSDATE值

trans by 2020-06-26T11:58:13Z

甲骨文-您可以选择所有内容,但选择1或2个字段,而无需编写者的抽筋吗?

在PLSQL中,是否可以选择表中除1或2以外的所有字段,而不必指定所需的字段?

例如,employee表具有以下字段:

  • ID
  • 名字
  • 爱好

是否仍然可以编写类似于以下内容的查询

select * from employee

而无需写像这样的东西就可以离开字段hobbies

select id, firstname, lastname from employee
trans by 2020-06-26T08:53:49Z

sql-在带有sequence.nextval的表中创建表

这个问题已经在这里有了答案:

  • 如何在Oracle上使用AUTO_INCREMENT创建ID? 16个答案

我使用以下查询创建了一个序列,

create sequence qname_id_seq start with 1 increment by 1 nocache;

现在,当我尝试创建使用上述序列的表时,它会引发以下错误,

Error report:
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"

我使用以下查询创建了一个带有sequence.nextval的表,

CREATE TABLE qname
(
    qname_id integer NOT NULL default qname_id_seq.nextval PRIMARY KEY,
    qname    VARCHAR2(4000) NOT NULL -- CONSTRAINT qname_uk UNIQUE
);
trans by 2020-06-25T00:45:13Z

oracle-PL / SQL块问题:找不到数据

SET SERVEROUTPUT ON
DECLARE
    v_student_id NUMBER := &sv_student_id;
    v_section_id NUMBER := 89;
    v_final_grade NUMBER;
    v_letter_grade CHAR(1);
BEGIN
    SELECT final_grade
    INTO v_final_grade
    FROM enrollment
    WHERE student_id = v_student_id
    AND section_id = v_section_id;

    CASE -- outer CASE
        WHEN v_final_grade IS NULL THEN
            DBMS_OUTPUT.PUT_LINE ('There is no final grade.');
        ELSE
            CASE -- inner CASE
                WHEN v_final_grade >= 90 THEN v_letter_grade := 'A';
                WHEN v_final_grade >= 80 THEN v_letter_grade := 'B';
                WHEN v_final_grade >= 70 THEN v_letter_grade := 'C';
                WHEN v_final_grade >= 60 THEN v_letter_grade := 'D';
                ELSE v_letter_grade := 'F';
            END CASE;

            -- control resumes here after inner CASE terminates
            DBMS_OUTPUT.PUT_LINE ('Letter grade is: '||v_letter_grade);
    END CASE;
    -- control resumes here after outer CASE terminates
END;

上面的代码是我从《 Oracle PL / SQL示例,2009年第4版》中摘录的,我的问题是,当我输入表中不存在的student_id时,它返回以下错误

Error report: ORA-01403: no data found
ORA-06512: at line 7
01403. 00000 -  "no data found"
*Cause:    
*Action:

但根据这本书,它应该返回一个空值,然后按照案例流程进行操作。

trans by 2020-06-24T12:10:19Z

函数与过程

谁能解释Oracle函数和过程之间的主要区别是什么? 如果我可以使用函数进行所有操作,为什么必须使用过程?

  1. 如果我不能在sql语句中调用过程,那么好了,我将编写一个函数来完成相同的工作。
  2. 过程不返回值,好吧,在执行任何dml操作后,我将仅返回sql%rowcount或1(成功),0(异常)
  3. 过程和函数都可以通过OUT / IN OUT参数将变量传递给调用环境

我听说主要的区别在于性能,“过程比功能更快”。 但没有任何细节。

提前致谢。

trans by 2020-06-21T19:41:27Z

oracle-是否有在PL / SQL中拆分字符串的功能?

我需要编写一个过程来规范具有由一个字符连接的多个令牌的记录。 我需要获得这些令牌来分割字符串,并将每个令牌作为新记录插入表中。 Oracle是否具有类似“拆分”功能的功能?

trans by 2020-06-18T08:32:13Z

oracle-截断存储过程中的表

当我在Oracle Shell中运行以下命令时,它工作正常

truncate table table_name

但是当我尝试将其放入存储过程中时

CREATE OR REPLACE PROCEDURE test IS
BEGIN
    truncate table table_name;
END test;
/

它失败了

ERROR line 3, col 14, ending_line 3, ending_col 18, Found 'table', Expecting:  @   ROW  or   (   or   .   or   ;   :=

为什么?

trans by 2020-02-19T22:56:24Z

plsql-获取Oracle数据库中所有功能和过程的列表

我正在比较三种Oracle模式。

我想获得每个数据库中使用的所有功能和过程的列表。 是否可以通过查询? (最好包含一个关于它们是否编译的标志)

理想情况下,最好使用一个带有标志的单个查询,该标志说明函数/过程是否在每个模式中。 但是,即使只是第一步,也比手动检查每个架构更好。

trans by 2020-02-07T14:59:51Z

pl sql-Oracle:如果不存在行,如何插入

在PL / SQL(oracle)中,如果不存在插入行的最简单方法是什么?

我想要类似的东西:

IF NOT EXISTS (SELECT * FROM table WHERE name = 'jonny') THEN
  INSERT INTO table VALUES ("jonny", null);
END IF;

但这不起作用。

注意:此表有2个字段,例如名称和年龄。 但是只有名字叫PK。

trans by 2020-02-02T23:32:12Z

用于PL / SQL Oracle函数或过程创建的IS vs AS关键字

这个问题已经在这里有了答案:

  • Oracle存储过程中的“ AS”和“ IS”有什么区别?                                     6个答案

我一直在尝试找出创建Oracle函数或过程时PL / SQL中的ISAS关键字之间的区别是什么。

我已经搜索过,但是无法找到任何有关此的信息。 有人知道区别吗?

trans by 2020-01-24T20:06:54Z

oracle-BEGIN-END阻止PL / SQL中的原子事务

这些信息应该很容易找到,但是我没有任何运气。

当我在PL / SQL中有BEGIN - END块时,它是否表现为原子事务,将尝试击中END块,如果出现任何错误,将回滚更改?

如果不是,我如何确保BEGIN-END块中的代码的行为类似于原子事务,并且该块如何“默认”运行?

编辑:我从存储过程中运行,我想使用隐式块。

trans by 2020-01-10T00:07:03Z

sql-如何在SELECT语句中使用BOOLEAN类型

我在参数中有一个带有BOOLEAN的PL / SQL函数:

function get_something(name in varchar2, ignore_notfound in boolean);

此功能是第三方工具的一部分,我无法更改。

我想在这样的SELECT语句中使用此函数:

 select get_something('NAME', TRUE) from dual;

这行不通,我得到这个异常:

ORA-00904:“ TRUE”:无效的标识符

据我了解,关键字TRUE无法识别。

我该如何进行这项工作?

trans by 2020-01-08T13:35:22Z

oracle-如何在将列添加到PL / SQL中的现有表之前检查是否存在该列?

如何在向Oracle数据库的表添加列之前添加简单的检查? 我已经包括了用于添加列的SQL。

ALTER TABLE db.tablename 
  ADD columnname NVARCHAR2(30);
trans by 2020-01-03T18:11:59Z

plsql-如何使用低特权的PL-SQL在Oracle中获取列数据类型?

我具有对Oracle数据库中一些表的“只读”访问权限。 我需要在某些列上获取架构信息。 我想使用类似于MS SQL sp_help的方法。

我在此查询中看到了我感兴趣的表:

SELECT * FROM ALL_TABLES

当我运行此查询时,Oracle告诉我“在架构中找不到表”,是的,参数正确。

SELECT 
DBMS_METADATA.GET_DDL('TABLE', 'ITEM_COMMIT_AGG', 'INTAMPS') AS DDL
FROM DUAL;

使用Oracle Universal Translator 9000后,我推测这不起作用,因为我没有足够的特权。 考虑到我的限制,我如何获得我具有PL-SQL语句读取访问权限的表上一列的数据类型和数据长度?

trans by 2019-11-14T01:46:05Z

oracle-是否可以从PL / SQL块输出SELECT语句?

如何获得PL / SQL块以输出SELECT语句的结果,就像执行普通的SELECT一样?

例如如何做一个SELECT像这样:

SELECT foo, bar FROM foobar;

提示:

BEGIN
SELECT foo, bar FROM foobar;
END;

不起作用。

trans by 2019-11-03T03:21:31Z

plsql-当结果可能为空时,如何选择PL / SQL中的变量?

考虑到查询可能不返回任何内容,有没有办法只运行一次查询以选择一个变量,那么在这种情况下变量应为null。

当前,我无法直接执行v_column变量,因为如果查询不返回任何内容,则PL / SQL会抱怨变量未设置。 我只能运行两次查询,第一个查询执行计数,如果计数为零,则将变量设置为null,如果计数为1,则选择进入变量。

因此代码如下所示:

v_column my_table.column%TYPE;
v_counter number;
select count(column) into v_counter from my_table where ...;
if (v_counter = 0) then
    v_column := null;
elsif (v_counter = 1) then
    select column into v_column from my_table where ...;
end if;

谢谢。

更新:我没有使用异常的原因是,在分配v_column之后,我仍然有一些遵循的逻辑,并且必须在异常部分中使用goto来跳回到以下代码。 我有点犹豫goto行。

trans by 2019-10-09T04:30:44Z

1 2 下一页 共2页