我是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) 有没有办法在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:表达式类型错误。当我通过向导运行程序包时,它将返回值。
有没有一种特定的方式来执行软件包,或者不可能?
谢谢。
所以我的公司希望我学习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中的数据类型之间的区别.
谢谢
我想创建将使用游标的过程,这与任意表相同。我当前的样子是这样的:
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我要参数化的命名表。问题是,我需要基于 …
现在有一个像这样的字符串:
789 + 456-239
我想得到一个这样的列表:
sign | num
+ 789
+ 456
- 239
Run Code Online (Sandbox Code Playgroud) 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)
我正在尝试创建此存储过程,我收到以下错误"表达式'我'不能用作任务目标"
任何人都可以对可能出现此错误的原因提出一些见解吗?
谢谢.
我在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) 我有以下程序
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中传递. …
我试图使用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) 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:缺少关键字