任何人都可以请解释我之间的差异public items inside the package和private items inside package?
这是什么类型的减速:
create or replace package BOOK_MANAGEMENT
as
function OVERDUE_CHARGES(aName IN VARCHAR2) return NUMBER;
procedure NEW_BOOK (aTitle IN VARCHAR2,
aPublisher IN VARCHAR2, aCategoryName IN VARCHAR2);
end BOOK_MANAGEMENT;
Run Code Online (Sandbox Code Playgroud) 所以我有这个:
SELECT p.plantnaam,o.levcode,o.offerteprijs
FROM plant p, offerte o
JOIN (SELECT plantcode , MIN(offerteprijs) AS offprijs
FROM offerte
GROUP BY plantcode) s
ON s.plantcode = p.plantcode
AND s.offprijs = o.offerteprijs
ORDER BY p.plantnaam,l.levcode
Run Code Online (Sandbox Code Playgroud)
显然在第6行,p.plantcode突然神奇地成为无效的标识符.为什么是这样?为什么在那之前,完全相同的表中的所有其他人都完美无缺?
当我们在Excel单元格中键入当前日期为08-May-2013时右键单击单元格,当我单击数字作为类别时,我会得到一个数字
Date-08-May-13
Formatted one-41402.00
Run Code Online (Sandbox Code Playgroud)
所以无论如何我可以在sql中获得相同的数字
我试过用这个.
select to_char(sysdate,'J') from dual
Run Code Online (Sandbox Code Playgroud)
但输出是2456421
我知道这是朱利安的价值
但是,任何人都可以帮助我获得输出,因为我正在获得excel ie; 41402
我必须为很多表添加主键,并且我从stackoverflow获得了以下脚本(对于一个表):
ALTER TABLE table1 ADD ID NUMBER(12);
CREATE SEQUENCE table1Seq START WITH 1;
UPDATE table1 SET table1ID = table1Seq.NEXTVAL;
ALTER TABLE table1 ADD PRIMARY KEY (ID);
CREATE OR REPLACE TRIGGER table1PKSet
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
:NEW.ID := table1Seq.NEXTVAL;
END;
/
Run Code Online (Sandbox Code Playgroud)
但是现在我已经为用户的所有表执行了相同的操作.
所以我想知道我是否可以使用pl/sql循环用户的所有表,并执行上述操作?
在PLSQL中执行SQL语句时
DBMS_SQL.EXECUTE('insert into tablename VALUES(aNumber)');
Run Code Online (Sandbox Code Playgroud)
它给出了ASCII字符错误.当直接插入它成功并插入它.
有一些不寻常的事情发生.虽然移民,我有2050年之后一些时间(例如,二○五○年五月二十○日,21.11,2051),但由于某些原因,他们的Oracle更改为1950年,1951年等.如果你问我,它是由客户报告很烦人.这些是退休日期,所以很明显他们不能在20世纪50年代和60年代
原始表中的日期类似于YYYYMMDD格式,即20500130.所以这是我的合并声明
MERGE INTO employment_data emp
USING temp_02 src
ON (TO_NUMBER(src.id) = emp.id)
WHEN MATCHED THEN UPDATE SET
emp.retirement_day = DECODE(TO_NUMBER(src.retirement), 0, NULL, TO_DATE(src.retirement, 'YYYY.MM.DD'));
Run Code Online (Sandbox Code Playgroud)
其他日期还可以(例如20301204),但是2050年之后的任何日期都是疯狂的.知道我怎么能解决这个烦恼?
Thx提前:-)
我现在正在学习PL/SQL并遇到一些误解,就像你声明一个程序一样,当你指出参数的类型时,你是否必须写关键词'IN'和'OUT'?因为我在Oracle文档网站上看到了一些程序声明.在一种情况下,IN出现在参数列表中
PROCEDURE double (
original IN VARCHAR2,
new_string OUT VARCHAR2
) AS
BEGIN
new_string := original || original;
END;
BEGIN
DBMS_OUTPUT.PUT_LINE ....
Run Code Online (Sandbox Code Playgroud)
在另一种情况下,没有IN:
CREATE OR REPLACE PROCEDURE award_bonus (
emp_id NUMBER, bonus NUMBER) AS
commission REAL;
comm_missing EXCEPTION;
BEGIN
SELECT ....
Run Code Online (Sandbox Code Playgroud)
关键词'IS'和'AS'也有什么区别吗?
我有一个表employee有一个列公司,其中包含所有空值
现在,我想使用NOT IN运营商作为公司名称
select * from employee where employee.company NOT IN ('ABC', 'DEF')
Run Code Online (Sandbox Code Playgroud)
从技术上讲,这不应该改变结果,因为公司列已经有空值.
但是添加NOT IN0行.
这是因为employee.company列有NULL值吗?
到目前为止,我一直只使用SQL Server,这是我第一次使用Oracle,我无法弄清楚这一点.
我想选择可从视图访问的所有数据,并且我还要选择当前系统日期.我试图运行这组查询但没有返回任何内容.
SELECT
(SELECT SYSDATE FROM DUAL),
*
FROM myView;
Run Code Online (Sandbox Code Playgroud)
我注意到它missing expression被抛出,但我无法理解(不知道)我的查询有什么不对.
更新:
这是我正在尝试运行的整个查询,没什么特别的.