标签: plsql

SQL无法使用CHAR(13)插入换行符:不存在名称为"char"的函数

请帮助我,这很令人不安,我试图插入一个简单的换行符.(视窗)

我的PL/SQL代码是:

DECLARE  str varchar2(32767);
BEGIN  str := 'A Text' + char(13) + char(10) + 'Next text';
INSERT INTO atable (...) (str);
END;
Run Code Online (Sandbox Code Playgroud)

我总是得到错误:

PLS-00222此范围内不存在名称为"CHAR"的函数

sql plsql

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

具有记录类型的Oracle流水线功能

我有以下情况:

CREATE OR REPLACE FUNCTION GET_CURSOR_PIPELINE(placeholder IN NUMBER)
RETURN MY_RECORD_TYPE PIPELINED IS

 TYPE CURSOR_TYPE IS REF CURSOR;
 myCursor CURSOR_TYPE;

 TYPE RECORD_TYPE IS RECORD(
   record_id NUMBER, 
   firstname VARCHAR(50)
 );
 resultSet RECORD_TYPE; 

BEGIN

OPEN myCursor FOR

SELECT 1, 'Scott' FROM DUAL
UNION
SELECT 2, 'Tiger' FROM DUAL;

IF (myCursor IS NOT NULL) THEN

  LOOP
      FETCH myCursor INTO resultSet;
      EXIT WHEN myCursor%NOTFOUND;
      PIPE ROW (MY_RECORD_OBJ(
        resultSet.record_id, 
        resultSet.firstname
      ));
  END LOOP;

  CLOSE myCursor;

END IF;

END GET_CURSOR_PIPELINE;
Run Code Online (Sandbox Code Playgroud)

我的生产代码和上面的示例之间的唯一区别是我需要从真实表中获取大约20个字段,而不仅仅是来自DUAL的2个字段.

我想避免使用锅炉代码,我必须明确列出所有涉及的字段.上面的函数工作正常,但我必须定义所有涉及的字段3次.该拳的时间,当我将返回类型定义.

CREATE …
Run Code Online (Sandbox Code Playgroud)

oracle plsql pipeline

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

如何编译保存在表中的PL/SQL源?

如何编译我目前在Oracle表中保存的PL/SQL源代码?(我正在从USER_SOURCE视图中复制源代码,然后我将删除这些对象,并希望从我保存的副本中恢复.)

我确信有一种简单的方法,但我只是没有输入正确的搜索条件.

oracle plsql

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

使用PL/SQL更好的文件压缩包?

我有一个xlsx文件sample.xlsx存储在一个远程目录中,大小约为1,699 KB.我已经尝试了两个流行的PL/SQL包(UTL_COMPRESS和AS_ZIP),它们将它们压缩成gzip和zip.

使用下面的代码AS_ZIP,我已将文件压缩为1,619 KB:

declare
  g_zipped_blob blob;
  l_file_name   varchar2(100) := 'sample.xlsx';
  l_directory   varchar2(100) := 'EXT_TAB_DATA';
begin
  as_zip.add1file( g_zipped_blob, l_file_name, as_zip.file2blob(l_directory, l_file_name));
  as_zip.finish_zip( g_zipped_blob );
  as_zip.save_zip( g_zipped_blob, l_directory, 'my2.zip' );
  dbms_lob.freetemporary( g_zipped_blob );
end;
Run Code Online (Sandbox Code Playgroud)

使用下面的代码(取自原始帖子)UTL_COMPRESS,我将文件压缩为1,618 KB:

DECLARE
   in_filename VARCHAR2(100) := 'sample.xlsx';
   l_directory   varchar2(100) := 'EXT_TAB_DATA';
   src_file   BFILE;
   v_content  BLOB;
   v_blob_len INTEGER;
   v_file     utl_file.file_type;
   v_buffer   RAW(32767);
   v_amount   BINARY_INTEGER := 32767;
   v_pos      INTEGER := 1;
BEGIN
   src_file …
Run Code Online (Sandbox Code Playgroud)

oracle zip gzip plsql

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

ORACLE SQL:暂停执行直到用户输入

我有一个像这样的Oracle SQL脚本:

  • 显示表中的某些值
  • 我想在这里暂停,直到我可以查看上一步表中的值,然后按一个按钮继续执行.如果值对我来说很好,我想在那里打破SQL脚本.
  • 执行一些清理,因为值看起来不好,需要修复.

在Oracle SQL中有类似的东西吗?有点像在批处理文件中暂停,你必须打空间继续运行,但我可以取消它

sql oracle plsql pause

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

在DDL语句上执行立即

我在Oracle数据库中执行了以下代码,但遇到了视图名称不存在的错误.任何人都可以看一下吗?

Declare 
Stmt varchar2(2000);
Var number;
Begin
Stmt:='create or replace view emp_dept_v as select * from emp';
Execute immediate stmt;
Select count(*) into var from emp_dept_v;
Dbms_output. Put_line(var);
End;
Run Code Online (Sandbox Code Playgroud)

我知道DDL语句是自动提交的,但在这种情况下,我必须在execute immediate语句之后添加一个commit语句来解决问题.

sql oracle plsql

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

如何从每列中删除空值

如何从每列中删除空值这是示例

Column 1  Column 2 column 3  column 4 
a           1        null      null   
b           0        null      null   
c           1        null      null   
a           null      0        null   
b           null      1        null   
c           null      0        null   
a           null     null       1     
b           null     null       1     
c           null     null       0     
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样

Column 1  Column 2 column 3  column 4  
a            1        0         1      
b            0        1         1      
c            1        0         0      
Run Code Online (Sandbox Code Playgroud)

这可能吗?您可能会看到图像前后的附加图片.

sql database oracle plsql

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

oracle PL / SQL如何为IPv6 cidr计算范围ip

例如,具有CIDR的IPv6地址:2620:0:2d0:200 :: 7/32输出起始范围:2620:0:0:0:0:0:0:0:0结束范围:2620:0:ffff:ffff: ffff:ffff:ffff:ffff

如何用PL / SQL计算?

oracle plsql plsqldeveloper

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

如何在PL/SQL中执行算术程序?

我是PL/SQL的新手,所以我试图在SQL开发人员中执行一些PL/SQL程序.但它会引发错误,即使我的程序是正确的.是否需要更改我的SQL Developer设置才能执行数学运算?

我想要执行这个程序.

DECLARE
    num number(5):= 20;
    num1 number(5):= 80; 
    sum number(5);
BEGIN
    sum:= num + num1;
    dbms_output.put_line('result='||sum);
END;
Run Code Online (Sandbox Code Playgroud)

错误是:从行开始出错:命令中的2 -

Error report -
ORA-06550: line 7, column 36:
PLS-00103: Encountered the symbol ")" when expecting one of the following:

   (
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
Run Code Online (Sandbox Code Playgroud)

oracle plsql

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

如何正确处理此pl/sql for循环中的异常?

首先,我是PL/SQL的相对新手,所以我可能会遗漏一些微不足道的东西.

这是一段代码,我遇到运行问题 -

FOR indx IN 1 .. arr.COUNT
    LOOP
        SELECT COUNT(*), ca.cities
        INTO tmp_count, affected_cities
        FROM PDB.utilities ca
        WHERE (ca.app_city_id           = cityid
        AND ca.app_plumbing_id = arr(indx))
        AND( BITAND(options1,2)        = 2
            OR BITAND(options1,1)          = 1)
        GROUP BY ca.cities;

        IF tmp_count                  >=0 THEN
             -- We have an affected app so collect metrics
            IF plumbings(indx_mv)  ='0Ci30000000GsBN' THEN
                count_wrigley:= count_wrigley+tmp_count;
            END IF;
            counter:= counter+tmp_count; --overall count. 
            tmp_count:=0;
            affected_cities:=null;
        END IF;

        EXCEPTION -- error thrown here !
            WHEN NO_DATA_FOUND THEN
                CONTINUE;
        END;  
    END LOOP; …
Run Code Online (Sandbox Code Playgroud)

oracle plsql

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

标签 统计

plsql ×10

oracle ×9

sql ×4

database ×1

gzip ×1

pause ×1

pipeline ×1

plsqldeveloper ×1

zip ×1