标签: plsql

截断存储过程中的表

当我在Oracle shell中运行以下内容时,它可以正常工作

truncate table table_name
Run Code Online (Sandbox Code Playgroud)

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

CREATE OR REPLACE PROCEDURE test IS
BEGIN
    truncate table table_name;
END test;
/
Run Code Online (Sandbox Code Playgroud)

它失败了

ERROR line 3, col 14, ending_line 3, ending_col 18, Found 'table', Expecting:  @   ROW  or   (   or   .   or   ;   :=
Run Code Online (Sandbox Code Playgroud)

为什么?

谢谢,Klas Mellbourn

oracle ddl plsql stored-procedures

49
推荐指数
4
解决办法
15万
查看次数

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

我需要编写一个过程来规范化一个记录,该记录具有由一个char连接的多个标记.我需要获取这些标记分割字符串并将每个标记作为新记录插入表中.Oracle是否有类似"拆分"功能的东西?

string oracle plsql split tokenize

48
推荐指数
7
解决办法
19万
查看次数

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 …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql oracle10g ora-01403

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

你可以选择一切,但是1或2个字段,没有作家的抽筋吗?

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

例如,employee表包含以下字段:

  • ID
  • 名字
  • 爱好

是否仍然可以编写类似的查询

select * from employee
Run Code Online (Sandbox Code Playgroud)

离开球场hobbies而不必写这样的东西?

select id, firstname, lastname from employee
Run Code Online (Sandbox Code Playgroud)

oracle plsql

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

在oracle中使用sequence.nextval创建表

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

create sequence qname_id_seq start with 1 increment by 1 nocache;
Run Code Online (Sandbox Code Playgroud)

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

Error report:
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
Run Code Online (Sandbox Code Playgroud)

我使用以下查询来创建一个带有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
);
Run Code Online (Sandbox Code Playgroud)

sql database oracle plsql

47
推荐指数
3
解决办法
20万
查看次数

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

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

sql oracle plsql

46
推荐指数
3
解决办法
21万
查看次数

oracle中的CURRENT_TIMESTAMP和SYSDATE不同

在oracle 10g中执行此SQL后:

SELECT SYSDATE, CURRENT_TIMESTAMP  FROM DUAL
Run Code Online (Sandbox Code Playgroud)

我收到这个奇怪的输出: Toad输出用于查询

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

oracle plsql oracle10g

46
推荐指数
3
解决办法
14万
查看次数

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

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

SELECT systimestamp FROM dual INTO time_db;
DBMS_OUTPUT.PUT_LINE('time before procedure ' || time_db);
Run Code Online (Sandbox Code Playgroud)

但我不明白输出的位置,如何将其重定向到包含我想要收集的所有数据的日志文件?

oracle plsql oracle-sqldeveloper dbms-output

45
推荐指数
6
解决办法
27万
查看次数

SQL生成1到100之间的数字列表

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

sql oracle plsql

45
推荐指数
7
解决办法
12万
查看次数

如何在Oracle中查询CLOB列

我正在尝试运行一个具有几列CLOB数据类型的查询.如果我像正常一样运行查询,那么所有这些字段都只有(CLOB)值.

我尝试使用DBMS_LOB.substr(column),我得到错误

ORA-06502: PL/SQL: numeric or value error: character string buffer too small
Run Code Online (Sandbox Code Playgroud)

我如何查询CLOB列?

sql oracle plsql clob ora-06502

45
推荐指数
4
解决办法
38万
查看次数