创建临时表出错?
PROCEDURE HuaBingDefectAnly961 (pYear number, pMonth number,pClassType VarChar,
pMachineId varchar, pDs OUT rcDataset)
Is
Begin
Create Global Temporary Table TmpTotalDefectQty
(
DefectID Numeric(18,8),
DefectQty Numeric(18,8),
MonthNo Numeric(3,0)
)On Commit Preserver Rows;
end;
在存储过程中创建临时表报错,出现符号 "CREATE"在需要下列之一时: begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a doubl。为什么啊?
问题点数:50、回复次数:5Top
1 楼njhart2003()回复于 2005-08-23 11:19:22 得分 25
在存储过程里执行DDL语句,必须用动态Sql!
execute immediate 'create table .....';
Top
2 楼ccdyshb(不做程序)回复于 2005-08-23 16:55:51 得分 0
为什么在执行以下语句时报错:无效CREATE命令?
execute immediate 'CREATE GLOBAL TEMPORARY TABLE TmpTotalDefectQty
(
DefectID Numeric(18,8),
DefectQty Numeric(18,8),
MonthNo Numeric(3,0)
)On Commit Preserver Rows';
谢谢Top
3 楼bzszp(SongZip)回复于 2005-08-23 17:02:56 得分 25
如果列数固定,没必要动态创建临时表
oracle的临时表跟sql server的有比较大的区别
在外面创建,就可以了。Top
4 楼ccdyshb(不做程序)回复于 2005-08-23 17:08:18 得分 0
在外面创建是什么意思?具体怎么创建?创建完了后一直存在吗?能在存储过程中访问吗?要删除吗》
谢谢Top
5 楼bzszp(SongZip)回复于 2005-08-23 17:12:39 得分 0
就是在sql*plus里面创建就行了
一直存在,可以访问,不需要删除,
自己只能看到自己的数据,commit后,自动清空。Top




