insert into t_a(fie1,fie2,...)(select fie1,fie2... from ...)
解决方案 »
- linux下安装oracle问题
- oracle有意思的问题
- oracle 运行段时间后:提示Windows Error: 8: Exec format error
- row_number() over()在公司家的运行结果不一样,求助,急,在线等。。。。。
- 请教一条SQL的写法
- 请教一个触发器的写法!
- 如何将BLOB字段的值获取并转换为字符串?
- 请教关于oracle8I中从noarchive到archive时出现的问题???????????//
- 本地计算机无法启动 Oracleorahome90ManagementServer 服务;错误:1053:服务并未及时。。
- 高分,请问XP上能安装orcale9i的什么版本?个人,标准??要服务(server)
- 一个关于统计表中行数的问题,急!
- 谁见过这样的oracle的错误? (ora-00000:正常,成功完成)
insert into t_a (select '||var_1||','||var_2||',sum(row1) from t_b
where row2='||condition;
condition; ……
|
少了一个逗号to jiezhi(西域浪子) :
一样的,我试了,错误也一样
declare
comid integer:=1040001;
v_yearmonth integer:=200201;
sSQL varchar2(2000);
begin
sSQL:='INSERT INTO t_components_input_month select :comid,:v_yearmonth,sum(QUANTITY) from T_SALES' ;
exec immediate sSQL;
end;试了还是不行啊?我是传入一个函数的,var1,var2作为参数传
使用参数需要使用using语句:
execute immediate sSql using ...
CREATE OR REPLACE PROCEDURE "CLGZJSX" (VL_YGID in char,VL_BH in char)
as
CURSOR c_gz IS SELECT SZDWBH,LBBH,XMBH,XMMC,XMLB FROM T_GZJSXDY;
g c_gz%ROWTYPE;
dml_str VARCHAR2(300);
XM Number(10,2);
CNT INTEGER;
MAX_NY Integer;
BEGIN
SELECT MAX(NF*100+YF) into MAX_NY FROM T_GZFFMX WHERE YGID=VL_YGID;
if MAX_NY is not null then
for g in c_gz loop
SELECT COUNT(*) INTO CNT FROM T_YGGZSX WHERE XMBH=G.XMBH AND YGID=VL_YGID;
IF CNT>0 THEN
dml_str:='SELECT JE FROM T_YGGZSX WHERE XMBH='''||G.XMBH||''' AND YGID='''||VL_YGID||'''';
EXECUTE IMMEDIATE dml_str INTO XM;
insert into T_GZJSXGZXM(LBBH,XMBH,BH,SZDWBH,XMMC,XMLB,JE)
Values(g.LBBH,g.XMBH,VL_BH,g.SZDWBH,g.XMMC,g.XMLB,XM);
ELSE
dml_str:='SELECT '||g.XMBH||' FROM T_GZFFMX WHERE NF*100+YF='||TO_char(MAX_NY)||' AND YGID='''||VL_YGID||'''';
EXECUTE IMMEDIATE dml_str INTO XM;
insert into T_GZJSXGZXM(LBBH,XMBH,BH,SZDWBH,XMMC,XMLB,JE)
Values(g.LBBH,g.XMBH,VL_BH,g.SZDWBH,g.XMMC,g.XMLB,XM);
END IF;
end loop;
end if;