标签: sqlplus

这个程序中的错误是什么?

我编写了以下pl/sql程序,无法检测错误:

 declare
 variable a number;
 b number:=2354;
 begin
 b:=:a;
 end;
Run Code Online (Sandbox Code Playgroud)

这个错误是

SP2-0552:未声明绑定变量"A".

请帮忙......

oracle variables plsql sqlplus

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

为什么我一直得到这个空指针未知源错误?

org.apache.jasper.JasperException: An exception occurred processing JSP page /customerDelete.jsp at line 39

java.lang.NullPointerException
sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我在尝试

      //get parameters from the request 
      String firstName=request.getParameter("first_Name");  
      String lastName=request.getParameter("last_Name");    


 preparedStatement = conn.prepareStatement("DELETE FROM customer "
                                            + " WHERE customer.first_Name= " +firstName
                    + " AND customer.last_Name= " +lastName);

 preparedStatement.setString(1, firstName); // line 39
 preparedStatement.setString(2, lastName);

 preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

SQL表

          CREATE TABLE customer
    (cust_ID        NUMBER          NOT NULL,
    sale_ID             NUMBER          NOT NULL,
    first_Name      VARCHAR2(30)        NOT NULL,
    mI          VARCHAR2(2)         ,
    last_Name       VARCHAR2(50)        NOT NULL,
    street_Name     VARCHAR2(50)        ,
    city            VARCHAR2(30)        NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

java sqlplus jdbc

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

我想选择'20-FEB-81'和'01 -MAY-81'之间的工作

我想要雇员的姓名,工作,在'20-FEB-81'和'01 -MAY-81'之间雇用,并按升序排列

查询我跑错了

SQL> select ename, job, hiredate where hiredate between '20-FEB-81' AND '01-MAY-81'   from emp;
select ename, job, hiredate where hiredate between '20-FEB-81' AND '01-MAY-81' from emp
                        *
 ERROR at line 1:
 ORA-00923: FROM keyword not found where expected


 SQL>
Run Code Online (Sandbox Code Playgroud)

我的表SQL>从emp中选择empno,ename,job,hiredate,sal;

 EMPNO ENAME      JOB       HIREDATE         SAL
 ---------- ---------- --------- --------- ----------
  7839 KING       PRESIDENT 17-NOV-81       5000
  7698 BLAKE      MANAGER   01-MAY-81       2850
  7782 CLARK      MANAGER   09-JUN-81       2450
  7566 JONES      MANAGER   02-APR-81       2975
  7654 MARTIN     SALESMAN  28-SEP-81       1250
  7499 ALLEN      SALESMAN …
Run Code Online (Sandbox Code Playgroud)

sql oracle sqlplus

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

Oracle触发器与null冲突

首先,这是一个作业,所以你想要建议的大多数非常酷的预先编写的函数,我将不被允许使用.

我有几张桌子都有字段

creation_date
created_by
last_update_date
last_updated_by
Run Code Online (Sandbox Code Playgroud)

我需要编写一个触发器来填充这些内容以进行创建或更新.问题是,这些表的空值对我来说是个问题.例:

CREATE TABLE parts
(
pno                NUMBER,
pname              VARCHAR2(50) NOT NULL,
qoh                NUMBER       NOT NULL,
price              NUMBER(5,2),
reorder_level      NUMBER(2),
creation_date      DATE         NOT NULL,
created_by         VARCHAR2(10) NOT NULL,
last_update_date   DATE         NOT NULL,
last_updated_by    VARCHAR2(10) NOT NULL,
CONSTRAINT parts_PK PRIMARY KEY (pno))
Run Code Online (Sandbox Code Playgroud)

这些NOT NULL是给我的,我不允许改变它们.所以我很难将其概念化.

  • 如果我的触发器在创建字段之前添加了这些值,我就无法将这些字段设置为INSERT INTO,因为它们不是NULL.
  • 如果我的触发器在创建字段后添加这些值,则会出现编译错误ORA-00903和00922.无效的表名和无效选项.

我在想我的触发器看起来像

CREATE OR REPLACE TRIGGER pcreate
  BEFORE UPDATE on parts
  FOR EACH ROW
BEGIN
  UPDATE
    SET creation_date = SYSDATE;
    SET created_by = USER;
    SET last_update_date = SYSDATE;
    SET last_updated_by …
Run Code Online (Sandbox Code Playgroud)

sql oracle null triggers sqlplus

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

oracle 11g列格式不起作用

我正在使用oracle 11g ex edition.从教科书中我找到了格式选项,但它不起作用.表格结构如下.

 Name                                      Null?    Type
----------------------------------------- -------- ----------------------------

ID                                                 NUMBER(4)
NAME                                      NOT NULL VARCHAR2(5)
ADDRESS                                            VARCHAR2(20)
PINCODE                                             NUMBER(6)
LOCATION                                           NUMBER(2)
DOB                                                DATE
Run Code Online (Sandbox Code Playgroud)

我用过这个命令

 column name format A12
 select name "USERNAME" from hai;
Run Code Online (Sandbox Code Playgroud)

我希望将列标题显示为USERNAME.但它只显示USERN.当使用格式选项时,它需要显示12个字符,但它只显示表格定义中的5个字符.为什么?查询结果如下

 USERN
 -----
 korna
Run Code Online (Sandbox Code Playgroud)

oracle sqlplus oracle11g

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

Oracle PL/SQL:PLS-00306:调用'EMP_PROJECT'时参数的数量或类型错误

创建PLSQL过程,该过程将客户ID作为参数并显示
他/她的预订.每个预订展示厅否,酒店,开始日期和持续时间

create or replace procedure emp_project(CustID NUMBER)
is 
cursor ecur
is
select r.RoomNo, r.HotelName, StartDate, Duration
from Room r, Booking b
where r.RoomNo=b.RoomNo
and r.RoomNo = b.CustID;
begin
for erec in ecur loop
dbms_output.put_line(erec. RoomNo ||' '||erec. HotelName ||' '|| erec. Duration);
end loop;
end;
/
Run Code Online (Sandbox Code Playgroud)

有人可以解释我的参数有什么问题吗?我运行时遇到此错误:

SQL> exec emp_project
BEGIN emp_project; END;

     *ERROR at line 1:
    ORA-06550: line 1, column 7:
    PLS-00306: wrong number or types of arguments in call to 'EMP_PROJECT'
    ORA-06550: line 1, column 7:
    PL/SQL: …
Run Code Online (Sandbox Code Playgroud)

oracle plsql sqlplus

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

在oracle 10g sql plus中将日期和时间插入时间戳

我对表的insert语句出错.属性E_STIME AMD E_FTIME是事件的开始日期,开始时间和结束日期,结束时间.两者的数据类型都是TIMESTAMP (6).

我试图将数据插入到已在sracle plus中创建的表上,但是我得到了一个错误

ORA-01830:日期格式图片在转换整个输入字符串之前结束

INSERT INTO EVENT (E_ID, E_NAME, E_STIME, E_FTIME, E_COST, ET_ET_ID, V_V_ID, C_C_ID)
VALUES ('E000002', 'RAVISINGH PARTY', TO_TIMESTAMP('2017-01-11 13:00:00.00',
        'YYYY-MM-DD HH24:MI:SS'), TO_TIMESTAMP('2017-01-11 18:00:00.00',
        'YYYY-MM-DD HH24:MI:SS'),'4897.00','ET002','V0002','C0002');
Run Code Online (Sandbox Code Playgroud)

它最初给出了一个错误 -

ORA-01843:不是有效月份

TO_TIMESTAMP插入后添加了我的位ORA-01830.

我究竟做错了什么?

oracle sqlplus oracle10g

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

发生错误时如何退出sqlplus

我想捕获任何可能发生的SQL错误,所以我在ksh中写了这个:

$ORACLE_HOME/bin/sqlplus -s u/p <<EOF
    WHENEVER OSERROR EXIT 68;
    WHENEVER SQLERROR EXIT SQL.SQLCODE;

    CREATE TABLE new_table
    AS (SELECT * FROM wrong_old_table);
    COMMIT;
EOF
Run Code Online (Sandbox Code Playgroud)

我为旧表输入了错误的名称以查看会发生什么。我希望只有在WHENEVER SQLERROR中询问时才具有sqlcode,但是我有这个:

 AS (SELECT * FROM wrong_old_table)
                      *
 ERROR at line 2:
 ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)

我更改了代码:

 $ORACLE_HOME/bin/sqlplus -s u/p <<EOF
    WHENEVER OSERROR EXIT 68;
    WHENEVER SQLERROR EXIT SQL.SQLCODE;

    BEGIN
       CREATE TABLE new_table
       AS (SELECT * FROM wrong_old_table);
       COMMIT;
    END;
 EOF

 sql_code=$?

 echo "code=$sql_code"
Run Code Online (Sandbox Code Playgroud)

即使有错误,代码也等于0。sql错误代码在哪里?


实际上,不使用begin ... end就可以了

oracle error-handling sqlplus

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

SQL Developer返回与SQL Plus命令行不同的日期

我在SQL Developer中具有以下脚本,但是在SQL Plus命令行中运行它似乎返回无效的日期。

set serveroutput on;
DECLARE
   yesterday varchar2(30);
   tz_yesterday varchar2(30);
BEGIN
   select sysdate - 1 into yesterday from dual;
   select cast(yesterday as timestamp WITH LOCAL TIME ZONE) into tz_yesterday from dual;
   dbms_output.put_line(yesterday);
   dbms_output.put_line(tz_yesterday);
END;
Run Code Online (Sandbox Code Playgroud)

这是SQL Developer提供的输出,它是正确的:

10-OCT-18
10-OCT-18 12.00.00.000000 AM
Run Code Online (Sandbox Code Playgroud)

这就是我在SQL Plus中得到的

SQL> l
  1  DECLARE
  2    g_vendor_id NUMBER;
  3    g_product_id NUMBER;
  4    yesterday varchar2(30);
  5    tz_yesterday varchar2(30);
  6    g_user_id NUMBER;
  7   BEGIN
  8    select sysdate - 1 into yesterday from dual;
  9    select cast(yesterday as timestamp WITH LOCAL …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql sqlplus oracle-sqldeveloper

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

如何在sqlplus中显示过程中使用的dbms_output.put_line的输出?

我试图使用SQLPLUS从我的plsql块执行该过程,遗憾的是,我无法在执行SQL脚本之后看到来自过程的"dbms_output.put_line"的输出,尽管输出在假脱机文件中可见,我想在执行完成后在屏幕上显示输出.

现在,虽然当我执行"SET SERVEROUTPUT ON"时,我得到提示但没有输出 在SQL开发人员中它显示输出,一旦执行完成,我该怎么做才能看到sqlplus中的输出.

在SQLPLUS中输出

在此输入图像描述

SQL Developer中的输出

在此输入图像描述

表结构和数据

create table cust_temp_temp
(name varchar2(20) , id varchar2(20));

insert into cust_temp_temp
select 'hasu t', '100' from dual
union all
select 'hasu r', '100' from dual
union all
select 'hasu e', '100' from dual
union all
select 'hasu  w', '100' from dual
union all
select 'hasu q', '100' from dual;
Run Code Online (Sandbox Code Playgroud)

包装结构:

CREATE OR REPLACE PACKAGE CUSTOM_PKG
AS
PROCEDURE get_transaction_details(
      id_ cust_temp_temp.id%TYPE);
END CUSTOM_PKG;
/
Run Code Online (Sandbox Code Playgroud)

包装体:

CREATE OR REPLACE PACKAGE BODY CUSTOM_PKG
AS …
Run Code Online (Sandbox Code Playgroud)

oracle plsql sqlplus oracle11g oracle-sqldeveloper

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