当前位置: 代码迷 >> PB >> 怎么在程序中用动态sql语句创建视图?
  详细解决方案

怎么在程序中用动态sql语句创建视图?

热度:87   发布时间:2016-04-29 09:01:48.0
如何在程序中用动态sql语句创建视图?急!在线等!
如何在程序中用动态sql语句创建视图?急!在线等!

------解决方案--------------------
stringMysqlMysql = "CREATE TABLE Employee "&
+"(emp_id integer not null,"&
+"dept_id integer not null, "&
+"emp_fname char(10) not null, "&
+"emp_lname char(20) not null)"
EXECUTE IMMEDIATE :Mysql USING SQLCA;
------解决方案--------------------
一楼的兄弟太快了,楼主要的是创建视图的....
stringMysqlMysql = "CREATE VIEW Employee "& 
+"(emp_id,"& 
+"dept_id , "& 
+"emp_fname , "& 
+"emp_lname ) AS SELECT ..." 
EXECUTE IMMEDIATE :Mysql USING SQLCA;
需要注意的是,创建视图和创建表格还有点区别,
在创建表格时可以加一条判断语句
if not exists(select 1 from sysobjects where name='表格表' and xtype='U')
create tabel ...

但创建视图时不能这样,如果你的sql要重复执行,需要再执行创建视图的语句前再加一条判断是否存在,存在即删除的语句

if not exists(select 1 from sysobjects where name='视图' and xtype='V')
drop view ...

把上面的语句组成成字符串,再execute immediate 就可以了;

------解决方案--------------------
在execute immediate :v_sql; 
后加判断一下messagebox(string(sqlca.sqlcode),sqlca.sqlerrtext)
------解决方案--------------------
SQL code
select p_id, gx_name, hg_sum = sum(hg), bl_sum = sum(bl)from table where rdate between :ad_date1 and :ad_date2 group by p_id, gx_name
  相关解决方案