如何在程序中用动态sql语句创建视图?急!在线等!

ppyybb 2009-12-17 08:56:43
如何在程序中用动态sql语句创建视图?急!在线等!
...全文
470 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
noviceCJ 2009-12-17
  • 打赏
  • 举报
回复

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

PS. 没看明白d_id有什么用
ppyybb 2009-12-17
  • 打赏
  • 举报
回复
现在有如下的一张表格,
字段说明:
p_id:产品名称
gx_name:工序名称 hg:
hg:产品合格数量
bl:产品不良数量
w_name:不良项目
r_date:输入日期
其中一个产品(p_id)对应多道工序(gx_name)
我想实现的是在程序中通过选择日期,来统计每个产品(即p_id)的每道工序的产品合格数量(即hg)和不良数量(即bl)之和。以下图为例,当我在程序中选定日期从‘2009-12-16’到‘2009-12-17’时:
我想实现的格式是
d_id p_id gx_name hg bl w_name

001006 XHD65 焊接 300 2 干检上漏
... ... ... ... ... ...
... ... ... ... ... ...
noviceCJ 2009-12-17
  • 打赏
  • 举报
回复
没必要用动态sql在PB中创建视图, 直接放到后台数据库中创建更好, 便于调试sql语句
pb8 2009-12-17
  • 打赏
  • 举报
回复
在execute immediate :v_sql;
后加判断一下messagebox(string(sqlca.sqlcode),sqlca.sqlerrtext)
fuxiaoyang13 2009-12-17
  • 打赏
  • 举报
回复
dingding
ppyybb 2009-12-17
  • 打赏
  • 举报
回复
sqlca.autocommit=true
v_sql="Alter view report as"+&
"SELECT DISTINCT TOP 100 PERCENT dbo.w_input.d_id, dbo.w_input.p_id, dbo.w_gongxu.gx_name, "+&
" sum(dbo.w_input.amount) as hg, sum(dbo.w_inputs.amount) AS bl, dbo.w_com.w_name, "+&
"dbo.w_input.r_date"+&
"FROM dbo.w_input INNER JOIN"+&
"dbo.w_inputs ON dbo.w_input.autoid = dbo.w_inputs.autoid INNER JOIN"+&
"dbo.w_gongxu ON dbo.w_input.g_id = dbo.w_gongxu.g_id INNER JOIN "+&
"dbo.w_com ON dbo.w_inputs.w_id = dbo.w_com.w_id"+&
"where dbo.w_input.r_date between '"+string(b_date)+"' and '"+string(b_date)+"' "+&
"group by dbo.w_input.d_id, dbo.w_input.p_id, dbo.w_gongxu.gx_name, dbo.w_com.w_name, "+&
"dbo.w_input.r_date"+&
"ORDER BY dbo.w_input.p_id, dbo.w_gongxu.gx_name"
execute immediate :v_sql;
messagebox("",v_sql)
sqlca.autocommit=false
我的语句是这样的,但是运行的时候没起作用,请大家帮我看看
dawugui 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 ppyybb 的回复:]
如何在程序中用动态sql语句创建视图?急!在线等!
[/Quote]

string Mysql
Mysql = "create view my_view as select * from tb where ..."
EXECUTE IMMEDIATE :Mysql USING SQLCA;
pb8 2009-12-17
  • 打赏
  • 举报
回复
一楼的兄弟太快了,楼主要的是创建视图的....
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 就可以了;
wag_enu 2009-12-17
  • 打赏
  • 举报
回复
动态SQL1
jlwei888 2009-12-17
  • 打赏
  • 举报
回复
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;
ppyybb 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 novicecj 的回复:]
SQL codeselect p_id, gx_name, hg_sum=sum(hg), bl_sum=sum(bl)fromtablewhere rdatebetween :ad_date1and :ad_date2groupby p_id, gx_name
PS. 没看明白d_id有什么用
[/Quote]
d_id是个部门编号
1 课程目标 学会使用腾讯提供的云开发功能快速开发后台 数据接口,用于存储小程序中用到的数据 学会使用小程序中常见的一些API,比如:分享小程序,拨打手机电话,地图位置等 掌握快速上架一款小程序需要的步骤 前端相关的css以及html,vue等基础不作为本课程的重点,本课程将提供一个基于图鸟UI修改的企业产品展示前端代码,我们在此基础上使用云开发实现页面数据动态化。由于本人是后端开发,对于前端样式等不擅长,所以基本都是直接复制现成的样式做简单的修改,想要学习前端html,css,js,vue等基础知识的小伙伴可以不必考虑本课程,B站以及其他平台有大量的免费课程。 2 课程内容 本课程将实现一个完整功能的企业产品展示小程序,之前有人找我开发一个农用拖拉机企业展示的小程序,说是要用云开发来做,正好我之前没用过云开发,都是自己搭建后端API以及管理后台来开发,因此想着一边开发一边录一个云开发的课程,帮助一些同学快速入门云开发,将包括一下内容: 首页 主要产品推荐 顶部铲平轮播图展示 中间产品分类 轮播消息通知 产品价格咨询 用户留下联系方式 全部产品列表展示 产品详细信息展示 用户估价咨询表单,用户向企业出售产品,类似厂家回收 个人中心 注册登录 询价记录 拨打企业电话 查看企业地址 查看企业工作时间 3 使用技术 vue2 uniapp 图鸟UI javascript 腾讯云开发 4 需要的开发工具 图鸟原始模板:https://ext.dcloud.net.cn/plugin?id=14378 hbuilder开发工具: https://www.dcloud.io/hbuilderx.html 微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧