我遇到了一个4页的SAS东西 - 宏?程序?它有程序,DATA块和PROC块,一个用于从Oracle导入的PROC SQL块.
有没有一种工具可以将SAS转换为可读的东西?理想的是SQL或PL/SQL(这两者似乎都适用),但几乎任何程序都是一种改进.我不需要可运行的东西,只需要人类可读的东西.
我已经知道2种死语言(TAL和TACL) - 有人请我免于学习SAS.
我有这样的查询:
SELECT X.Y( 'p1', 'p2', 'p3', 'p4', '100')
FROM dual
Run Code Online (Sandbox Code Playgroud)
我知道双重是什么,但这部分X.Y( 'p1', 'p2', 'p3', 'p4', '100')真让我惊讶.这种语法意味着什么?
是X和Y表或什么?
我创建了一个名为的表dual2.我在那里有一行,可以从中选择.尝试删除它时,会产生此错误:
第1行的错误:
ORA-00604:递归SQL级别1发生错误
ORA-00942:表或视图不存在
但是,表仍然存在!它从dba_tables和返回user_tables.
关于这里发生了什么的任何想法?
alt text http://img180.imageshack.us/img180/6012/28140463.png
这是我用plsql开发人员创建的表创建脚本:
-- Create table
create table
(
DUMMY VARCHAR2(1)
)
tablespace SYSTEM
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
Run Code Online (Sandbox Code Playgroud)
PS:p.cambell感谢您的编辑!抱歉我的英语不好:)
这是我正在运行的脚本
DROP SEQUENCE S_JobStatus;
CREATE SEQUENCE S_JobStatus
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOMINVALUE
;
--
-- TABLE: JobStatus
--
DROP TABLE JobStatus;
CREATE TABLE JobStatus(
Id NUMBER(10, 0) NOT NULL,
ShortName NUMBER(10, 0) NOT NULL,
Description NUMBER(10, 0) NOT NULL,
CONSTRAINT PK_JobStatus PRIMARY KEY (Id)
)
;
/* DROP TRIGGER JobStatus_SequenceTrigger; */
CREATE TRIGGER JobStatus_SequenceTrigger
BEFORE INSERT
ON JobStatus
FOR EACH ROW
WHEN new.Id IS NULL
BEGIN
SELECT S_JobStatus.nextval into :new.Id from dual
END;
Run Code Online (Sandbox Code Playgroud)
这是Oracle SQL Developer中的输出
DROP …Run Code Online (Sandbox Code Playgroud) 我有一个oracle函数,如下所示.当我在sql-developer中运行它时会出错
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区错误太小.
但是,DBMS_OUTPUT.PUT_LINE(FINAL_RESULT)函数中的行正在输出窗口中打印预期的输出.
任何人都可以帮我吗?
create or replace
FUNCTION AVERAGE_WORKFORCE(PERIOD in varchar2, YR in varchar2) RETURN CLOB AS
FINAL_RESULT CLOB:=null;
STRING_QUERY_TEXT CLOB:=null;
OUTPUT_RESULT CLOB:=null;
BEGIN
FINAL_RESULT:='<FINAL_RESULT><HEADER><NAME> </NAME> <NAME>SENIOR DIRECTOR</NAME> <NAME>DIRECTOR</NAME> <NAME>EXECUTIVE</NAME> <NAME>MANAGER</NAME><NAME>CASHIER</NAME><NAME>EMPLOYEE</NAME></HEADER>';
STRING_QUERY_TEXT:='SELECT XMLElement("tuple",XMLElement("DESC",''Average number of registered employees''), XMLElement("PERMANENT_EMP",GET_COUNT_AVERAGE_WORKFORCE('''||PERIOD||''','''||YR||''',''SENIOR DIRECTOR'')), XMLElement("PERMANENT_EMP",GET_COUNT_AVERAGE_WORKFORCE('''||PERIOD||''','''||YR||''',''DIRECTOR'')), XMLElement("PERMANENT_EMP",GET_COUNT_AVERAGE_WORKFORCE('''||PERIOD||''','''||YR||''',''MANAGER'')), XMLElement("PERMANENT_EMP",GET_COUNT_AVERAGE_WORKFORCE('''||PERIOD||''','''||YR||''',''EXECUTIVE'')), XMLElement("PERMANENT_EMP",GET_COUNT_AVERAGE_WORKFORCE('''||PERIOD||''','''||YR||''',''CASHIER'')), XMLElement("PERMANENT_EMP",GET_COUNT_AVERAGE_WORKFORCE('''||PERIOD||''','''||YR||''',''EMPLOYEE''))) FROM DUAL';
EXECUTE_QUERY_RETURN_RESULT(STRING_QUERY_TEXT,OUTPUT_RESULT);
FINAL_RESULT:=FINAL_RESULT||''||OUTPUT_RESULT;
FINAL_RESULT:=FINAL_RESULT||''||'</FINAL_RESULT>';
DBMS_OUTPUT.PUT_LINE(FINAL_RESULT);
RETURN FINAL_RESULT;
END AVERAGE_WORKFORCE;
Run Code Online (Sandbox Code Playgroud) 我有以下功能:
create or replace
FUNCTION "MXUPGKEYVAL"(tbname varchar2,colname varchar2) return number is
val number;
BEGIN
EXECUTE IMMEDIATE
'select sum(length('||colname||')) from '||tbname into val;
return val;
END;
Run Code Online (Sandbox Code Playgroud)
以及更新:
update ANINTEGDATA set val1=to_char(nvl(MXUPGKEYVAL(MX5T,MX5C),0)) where type=1;
Run Code Online (Sandbox Code Playgroud)
当我执行更新时,我得到:
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
ORA-06512: at "MAXIMO.MXUPGKEYVAL", line 6
ORA-06512: at line 2
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?
此致,Radu.
稍后编辑:
表ANINTEGDATA是:
create table ANINTEGDATA
(
MX5T VARCHAR2(50),
MX5C VARCHAR2(50),
MX6T VARCHAR2(50),
MX6C VARCHAR2(50),
TYPE NUMBER,
VAL1 VARCHAR2(200),
VAL2 VARCHAR2(200)
);
Run Code Online (Sandbox Code Playgroud) BEGIN
dbms_output.put_line('Welcome to PL/SQL');
END;
/
Run Code Online (Sandbox Code Playgroud)
我在sample.sql文件中有这个代码.
怎么跑sample.sql?
我在这里根据类别获取记录.
我的表foo有字段[id,name,class].我的记录可以像:
1, ram, 10
2, hari, 9
3, sita, 10
4, gita, 9
5, rita, 5
6, tina, 7
8, nita, 8
9, bita, 5
10,seta, 7
Run Code Online (Sandbox Code Playgroud)
...和更多...
现在我想得到来自不同类的每条记录的结果..即类似的东西
1, ram, 10
2, hari, 9
5, rita, 5
6, tina, 7
8, nita, 8
Run Code Online (Sandbox Code Playgroud)
即按班级排名前1位
OR子句是否会抑制索引,如果是,有人可以提供适当的示例吗?
create table test2(field1 varchar2(100),field2 varchar2(100),
field3 number,field4 varchar2(100));
create index test2_idx1 on test2(field1);
create index test2_idx2 on test2(field3);
declare
j number :=1;
begin
for i in 1..500000 loop
insert into test2 (field1,field2,field3,field4)
values('field1='||j,'field2='||i,j,'field4='||??i);
if (i mod 1000)=0 then
j:= j+1;
end if;
end loop;
commit;
end;
EXEC DBMS_STATS.GATHER_TABLE_STATS ('user', 'test2');
select * from test2 where field1='field1=1' or field3=1;
Run Code Online (Sandbox Code Playgroud)