oracle存储过程变量赋值报错
CREATEORREPLACEPROCEDUREZBFLAGEXb(vdwlxvarchar,vbzsjvarchar)ISvSqlvarchar(8000);vTnam...
CREATE OR REPLACE PROCEDURE ZBFLAGEXb
(
vdwlx varchar,
vbzsj varchar
)IS
vSql varchar(8000) ;
vTname varchar(100);
vTnameEx varchar(100);
BEGIN
vTname := 'ZBFlag_' + vdwlx;
vTnameEx := 'ZBFlagEx_' + vdwlx;
vSql :='create table '||vTname||' (dwbh varchar(100),dwmc varchar(200),flag number(1),dwlx number) ';
EXECUTE IMMEDIATE vSQL;
commit;
vTname 赋值的这句(vTname := 'ZBFlag_' + vdwlx;)报错了,我的写法不对是吗?正确的语法是什么呢,请大家指教。 展开
(
vdwlx varchar,
vbzsj varchar
)IS
vSql varchar(8000) ;
vTname varchar(100);
vTnameEx varchar(100);
BEGIN
vTname := 'ZBFlag_' + vdwlx;
vTnameEx := 'ZBFlagEx_' + vdwlx;
vSql :='create table '||vTname||' (dwbh varchar(100),dwmc varchar(200),flag number(1),dwlx number) ';
EXECUTE IMMEDIATE vSQL;
commit;
vTname 赋值的这句(vTname := 'ZBFlag_' + vdwlx;)报错了,我的写法不对是吗?正确的语法是什么呢,请大家指教。 展开
1个回答
展开全部
ORACLE中字符串连接符是双竖线“||”。
把代码中的“+”换成“||”,另外,ddl语句不需要commit,去掉commit,代码如下:
CREATE OR REPLACE PROCEDURE aaa_Zbflagexb(Vdwlx VARCHAR,
Vbzsj VARCHAR) IS
Vsql VARCHAR(8000);
Vtname VARCHAR(100);
Vtnameex VARCHAR(100);
BEGIN
Vtname := 'ZBFlag_' || Vdwlx;
Vtnameex := 'ZBFlagEx_' || Vdwlx;
Vsql := 'create table ' || Vtname ||
' (dwbh varchar(100),dwmc varchar(200),flag number(1),dwlx number) ';
EXECUTE IMMEDIATE Vsql;
--COMMIT;
END;
把代码中的“+”换成“||”,另外,ddl语句不需要commit,去掉commit,代码如下:
CREATE OR REPLACE PROCEDURE aaa_Zbflagexb(Vdwlx VARCHAR,
Vbzsj VARCHAR) IS
Vsql VARCHAR(8000);
Vtname VARCHAR(100);
Vtnameex VARCHAR(100);
BEGIN
Vtname := 'ZBFlag_' || Vdwlx;
Vtnameex := 'ZBFlagEx_' || Vdwlx;
Vsql := 'create table ' || Vtname ||
' (dwbh varchar(100),dwmc varchar(200),flag number(1),dwlx number) ';
EXECUTE IMMEDIATE Vsql;
--COMMIT;
END;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询