小编Jos*_*729的帖子

解决方案"无法在查询中执行DML操作"?

我正在使用数据分析工具,我的要求是接受用户的值,将其作为参数传递并将其存储在表中.非常直截了当所以我坐下来写这个

create or replace
procedure complex(datainput in VARCHAR2)
is
begin
insert into dumtab values (datainput);
end complex;
Run Code Online (Sandbox Code Playgroud)

我使用以下语句在SQL Developer中执行了此操作

begin
complex('SomeValue');  
end;
Run Code Online (Sandbox Code Playgroud)

它工作正常,并将值插入表中.但是,数据分析工具不支持上述语句,因此我使用了函数.以下是函数的代码,它编译.

create or replace
function supercomplex(datainput in VARCHAR2)
return varchar2
is
begin
insert into dumtab values (datainput);
return 'done';
end supercomplex;   
Run Code Online (Sandbox Code Playgroud)

我再一次尝试在SQL Developer中执行它,但是我在执行以下代码时无法在查询中执行DML操作

select supercomplex('somevalue') from dual;
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 我需要一个可以在SQL Developer中运行上述函数的语句,或者 - 一个可以执行我正在寻找的函数的函数,可以由select语句执行. - 如果我不能做我要问的事情,我想要一个理由,所以我可以告诉我的经理,因为我很新(就像一周大了?)到PL/SQL,所以我不知道规则和语法.

PS我多么希望这是C++甚至是Java :(

编辑

我需要在SQL Developer上运行该函数,因为在DMine(它是工具)中运行它之前,为了测试它是否有效.SQL中的任何无效内容在DMine中也是无效的,但不是相反.

感谢您的帮助,我了解情况以及为什么它是非法的/不推荐的

sql oracle plsql stored-procedures function

25
推荐指数
2
解决办法
6万
查看次数

无法通过Pentaho连接到oracle.找不到'oracle.jdbc.driver.OracleDriver'

嗨,我刚刚安装了Pentaho Data Integration v.5.01,我正在尝试连接数据库.但是,当我收到错误(粘贴在下面)时,我无法测试连接.

我也在系统上安装了JDK 1.7,但是我似乎无法在任何地方找到ojdbc14.jar.

我下载并将其粘贴在pentaho的\ lib文件夹中,但我仍然得到同样的错误.

解决这个问题的任何方法?

Error connecting to database [test] : org.pentaho.di.core.exception.KettleDatabaseException: 
Error occured while trying to connect to the database

Driver class 'oracle.jdbc.driver.OracleDriver' could not be found, make sure the 'Oracle' driver (jar file) is installed.
oracle.jdbc.driver.OracleDriver


org.pentaho.di.core.exception.KettleDatabaseException: 
Error occured while trying to connect to the database

Driver class 'oracle.jdbc.driver.OracleDriver' could not be found, make sure the 'Oracle' driver (jar file) is installed.
oracle.jdbc.driver.OracleDriver


    at org.pentaho.di.core.database.Database.normalConnect(Database.java:415)
    at org.pentaho.di.core.database.Database.connect(Database.java:353)
    at org.pentaho.di.core.database.Database.connect(Database.java:306)
    at org.pentaho.di.core.database.Database.connect(Database.java:294)
    at org.pentaho.di.core.database.DatabaseFactory.getConnectionTestReport(DatabaseFactory.java:84)
    at …
Run Code Online (Sandbox Code Playgroud)

java oracle pentaho jdbc oracle11g

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

如何从SAP ABAP系统中提取数据?

我需要以一种格式从SAP ABAP系统中提取数据,然后将其加载到Oracle数据库中(xlsx,csv,dmp ..等)

提取数据后,我将使用Pentaho将其上传到Oracle数据库.

有没有办法从SAP提取数据?我还需要自动化它(提取),但现在这不是太大的问题,我可以稍后解决/担心这一部分.

如果不可能这样做,解释为什么会有所帮助!

oracle sap abap oracle11g

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

有没有办法在SQL中否定WHERE子句?

这是我的基本查询

select distinct a.projects , case when(billing_fy!=0)
then(select round(((sum(cost_project)/(sum(billing_fy)/((10/12)*365)))),2) 
     from table1 b      
     where a.projects = b.projects 
     group by projects)
else 0 end as "WIP days outstanding"
from table1 a
Run Code Online (Sandbox Code Playgroud)

它会产生以下输出

Projects                        WIP days outstanding
History - AURANGABAD - NASIK    0
History - PUNE - MUMBAI         0
History - NASIK - MUMBAI        89.92
History - SASAGRAM - MUMBAI     0
History - SASAGRAM - MUMBAI     1386.52
History - AURANGABAD - MUMBAI   83.25
Run Code Online (Sandbox Code Playgroud)

现在我需要的是显示除第4行以外的所有行.我首先使用case语句的原因是因为如果我这样做(billing_fy!= 0子句是为了防止由除以0引起的错误)

select projects,
round(((sum(cost_project)/(sum(billing_fy)/((10/12)*365)))),2) as "WIP days outstanding"
from …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g oracle-sqldeveloper

4
推荐指数
2
解决办法
8583
查看次数

如果不同值的计数为空,如何显示0?

我的表有X个不同的供应商,每个供应商都有Y个目标(包括没有)

vendor varchar2(100),
location varchar2(100),
type varchar2(100),
rating varchar2(20),
control_objective varchar2(1000)
Run Code Online (Sandbox Code Playgroud)

现在我需要显示一个在以下脚本上运行的条形图

select trim(vendor)||' '||trim(location)||' '||trim(type1) AS vendor_location,
       count(distinct control_objective) as "Cont Obj" 
from some_table
where (Rating = 'Needs improvement' or Rating = 'Unacceptable') and 
      "Year" = '2011' and 
      Quarter = 'Q3'
group by trim(vendor)||' '||trim(location)||' '||trim(type1)
order by trim(vendor)||' '||trim(location)||' '||trim(type1);
Run Code Online (Sandbox Code Playgroud)

并产生以下输出

-----vendor_location----Cont Obj
1----Big Blue Car---------5
2----Big Red Car----------4
3----Small Pink Truck-----4
4----Small White Truck----2
Run Code Online (Sandbox Code Playgroud)

问题是,可能有第五个供应商,比如说Big White Van在客观领域没有价值因此它没有显示.但我希望它显示如下.

-----vendor_location----Cont Obj …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle11g oracle-sqldeveloper

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

如何在SQL中匹配一个和/或多个0?

我正在使用Oracle 11g,我需要帮助试图找出如何匹配任何长度为0的字符串.但它应该只包含0.

i.e.
0 - Valid
00 - Valid
0000 - Valid
0010000 - Invalid
000000000- Valid
Run Code Online (Sandbox Code Playgroud)

一直试图找到一些帮助,但无济于事.

sql oracle11g

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