标签: plsql

如何在插入中输入此表中的数据?

我是pl/sql的新手,我想在插入中输入这些数据有人帮帮我吗?我不知道如何在插入中输入此数据而不进行连接我无法找到在插入中输入数据的方法

these     SELECT PORCENTAJE 
          FROM RANGO_SUBIDA_COMISION;





    VARIABLE B_ANIO NUMBER;

    EXECUTE :B_ANIO := 042018;

    DECLARE
    V_EMPLEADO_ID    EMPLEADOS.EMPLEADO_ID%TYPE;
    V_NOMBRE         EMPLEADOS.NOMBRE%TYPE;
    V_APELLIDO       EMPLEADOS.APELLIDO%TYPE;
    V_VALOR_COMISION COMISIONES.VALOR_COMISION%TYPE;
    V_SUELDO         EMPLEADOS.SUELDO%TYPE;

BEGIN

    FOR R IN

    (
    SELECT DISTINCT E.EMPLEADO_ID , E.NOMBRE , E.APELLIDO , C.VALOR_COMISION , E.SUELDO
    FROM EMPLEADOS E JOIN COMISIONES C
    ON (C.EMPLEADO_ID = E.EMPLEADO_ID)
    )
    LOOP

    V_EMPLEADO_ID      := R.EMPLEADO_ID;
    V_NOMBRE           := R.NOMBRE;
    V_APELLIDO         := R.APELLIDO;
    V_VALOR_COMISION   := R.VALOR_COMISION;
    V_SUELDO           := R.SUELDO;

    INSERT INTO INFORME_SUBIDA_COMISION 
    VALUES ( :B_ANIO ,V_EMPLEADO_ID , V_NOMBRE , V_APELLIDO , V_VALOR_COMISION …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql

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

在PL / SQL中执行具有功能的Oracle软件包

有没有办法在Oracle PL / SQL中执行包功能?

这是带有函数的示例包,该函数返回参考光标:

create or replace PACKAGE "PKG_PACKAGE1"
AS
    TYPE CURS_OUT IS REF CURSOR;
    FUNCTION fnc_PACKAGE1(PARAM1 VARCHAR2, PARAM2 INT) RETURN CURS_OUT;
 END "PKG_PACKAGE1";


create or replace PACKAGE BODY "PKG_PACKAGE1"
AS
FUNCTION fnc_PACKAGE1(PARAM1 VARCHAR2, PARAM2 INT) RETURN CURS_OUT
AS
    RUNCURS CURS_OUT;
        BEGIN
            OPEN  RUNCURS FOR
                SELECT 'Data Returned' FROM DUAL;
            RETURN RUNCURS;
            END;
END "PKG_PACKAGE1";
Run Code Online (Sandbox Code Playgroud)

这是我想使用SQL Developer Tools在PL / SQL中执行的方法:

 BEGIN
   :returnRes := PKG_PACKAGE1.FNC_PACKAGE1(:PARAM1,:PARAM2);
 END;
Run Code Online (Sandbox Code Playgroud)

要么

Declare 
returnRes Varchar2(200);
BEGIN
   returnRes := PKG_PACKAGE1.FNC_PACKAGE1(:PARAM1,:PARAM2);
END;
Run Code Online (Sandbox Code Playgroud)

当我运行任何一个时,我都会收到错误消息:PLS-00382:表达式类型错误。当我通过向导运行程序包时,它将返回值。

有没有一种特定的方式来执行软件包,或者不可能?

谢谢。

oracle plsql plsqldeveloper

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

ABAP域和数据类型了解

所以我的公司希望我学习ABAP for SAP,我已经开始学习这个了.我的背景主要是VB.net和带有T-SQL的sqlserver,但也有c#的经验.

使用ABAP虽然我需要对数据类型和域的理解进行一些澄清或确认.如果有人可以帮忙.

我目前的理解是我们有一个表,在表中我们有字段,如果需要,字段有数据类型和长度.示例:我们有一个表Customer,我可以有一个customerNumber数据类型为的字段char(10).对我来说这意味着在表客户中我们有一个名为CustomerNumber10个字符的字段.

但是对于ABAP我们有域,数据元素然后是字段,这是否意味着我们有一个名为我们想要的字段.由于该字段可能意味着我们分配了一个数据元素,该数据元素具有存储在字段中的数据类型的描述.但是,为了存储格式和数据类型,我们需要将Domain分配给Data元素.

比如我叫场ZCUSNO,目前这意味着什么但是如果我分配ZCTNMR(与客户编号的说明)的数据元素这告诉我们,现场ZCUSNO是ZCTNMR这样ZCUSNO的一个客户号字段.

现在,在数据元素中,我们将拥有一个域,对于我们的示例ZCTNMR数据元素(客户编号),我们可以将其指定ZCTDOM为域,这将是我认为的数据类型,因此Char 20,Char 100或整数字段等.

我的理解是否正确?并且有人可以清楚地表明域>数据元素与sqlserver中的数据类型之间的区别.

谢谢

t-sql sap abap plsql

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

在PL / SQL过程中打开动态表名称的游标

我想创建将使用游标的过程,这与任意表相同。我当前的样子是这样的:

create or replace
  PROCEDURE
    some_name(
      p_talbe_name IN VARCHAR2,
      p_chunk_size IN NUMBER,
      p_row_limit IN NUMBER
    ) AS

  CURSOR v_cur IS
     SELECT common_column,
       ora_hash(substr(common_column, 1, 15), p_chunk_size) as chunk_number
     -- Here it can find the table!
     FROM p_table_name;

  TYPE t_sample IS TALBE OF v_cur%rowtype;
  v_sample t_sample;
BEGIN
  OPEN v_cur;
  LOOP FETCH v_cur BULK COLLECT INTO v_sample LIMIT p_row_limit;
    FORALL i IN v_sample.first .. v_sample.last
    INSERT INTO chunks VALUES v_sample(i);
    COMMIT;
    EXIT WHEN v_cur%notfound;
  END LOOP;
  CLOSE v_cur;
END;
Run Code Online (Sandbox Code Playgroud)

问题是它找不到p_table_name我要参数化的命名表。问题是,我需要基于 …

oracle plsql

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

在oracle中要求分割功能

现在有一个像这样的字符串:
789 + 456-239

我想得到一个这样的列表:

sign | num
+      789
+      456
-      239
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql

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

PLS-00363:表达式'i'不能用作赋值目标

CREATE or replace stored procedure test123 as
DECLARE
    i   NUMBER := 0;
BEGIN
    FOR i IN 1..10 LOOP
        INSERT INTO test123 ( empl_number ) VALUES ( i );
        i := i + 1;
    END LOOP;
END;
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建此存储过程,我收到以下错误"表达式'我'不能用作任务目标"

任何人都可以对可能出现此错误的原因提出一些见解吗?

谢谢.

oracle plsql stored-procedures

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

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
查看次数

将SELECT STATEMENT作为IN参数传递给过程并在Oracle中执行

我有以下程序

CREATE OR REPLACE PROCEDURE p_create_text_file (
   loc IN VARCHAR2
   , file IN VARCHAR2
   , select_statement in varchar2
   , line_statement in varchar2
)
IS
    fid UTL_FILE.FILE_TYPE := UTL_FILE.FOPEN (loc, file, 'W');
    line VARCHAR2(2000);
BEGIN
    FOR rec IN (
        /*replace this select*/
        select
        parameter
        , value
        from nls_database_parameters
        where parameter in ('NLS_RDBMS_VERSION', 'NLS_CHARACTERSET')
        /*end of replace*/
    )
    LOOP
        line := rec.parameter || ';' || rec.value;
        UTL_FILE.PUT_LINE (fid, line);
    END LOOP;
    UTL_FILE.FCLOSE (fid);
EXCEPTION
    WHEN OTHERS THEN UTL_FILE.FCLOSE (fid);
END;
/
Run Code Online (Sandbox Code Playgroud)

我需要用"something"替换select语句,以便它可以在IN参数SELECT_STATEMENT中传递. …

oracle parameters select plsql procedure

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

如何在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
查看次数

如何使用rownum从表中选择第n行

SELECT emp_id INTO high_payed_emp_id
FROM (SELECT emp_id  from cursor_table ORDER BY emp_salary DESC)
WHERE rownum = 1;
Run Code Online (Sandbox Code Playgroud)

我想获得最大的emp_id.付费员工 错误消息:ORA-00905:缺少关键字

sql oracle plsql greatest-n-per-group

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