在网站的框架中,有些提供了在页面进行数据库表的列添加功能,那程序是如何完成相应的SQL语句的动态生成

在网站的框架中,有些提供了在页面进行数据库表的列添加功能,那程序是如何完成相应的SQL语句的动态生成,第1张

这个似乎不难

添加表的sql语句:alter table 表名 add 列名渣镇 数据类型改梁迟

列名使用参数如@col即可动态生成,至于数据类型可以设置成固定的,如核李果需要动态生成也可以设置成参数,在页面用下拉列表形式选择为参数赋值

用SQL语句添加表字段:alter table 表名add 字段名 字段类型;

用select name from syscolumns where id=object_id(表名)查找出所有的表字段。然后再使用SELECT 查找到的字段 from 表名。

使用ResultSet动态读取数据库数据。ResultSet 是一个迭代模式指键的动态连接容器。迭代模式的容器遍历方式:

while(rs.next()){

//循环内容

}

rs.next()返回值是一个布尔值,表示迭代容器中是否还有肢顷下一条数据,即在迭历逗陆代过程中是否已经到结尾。直到迭代集合中再无数据rs.next()返回false

SQL文本在编译时是未知的。

例如,SELECT语句包含的标识符(如表名)在编译时是未知的,或者WHERE子句的激缺条件数量在编译时是未知。

静态SQL不支持

例如,在PL/SQL中用静态SQL只能执行查询以及DML语句。如果想要执行DDL语句,只能使用动态SQL。

当让使用静态SQL,也有它的好处:

编译成功验证了静态SQL语句引用有明灶辩效的数据库对象和访问这些对象的权限

编译成功创建了模式对象的依赖关系

动态SQL语句是一个最多只能返回一行的SELECT语句

使用动态SQL语句辩晌返回单列,查询SCOTT的薪水:

declare

v_sql_text varchar2(1000)

v_sal number

v_enameemp.ename%type := 'SCOTT'

begin

v_sql_text := 'select e.sal from emp e where e.ename = :ename'

execute immediate v_sql_text

into v_sal

using v_ename

dbms_output.put_line(v_ename || ':' || v_sal)

end

使用动态SQL返回一条记录,查询SCOTT的基本信息:

declare

v_sql_text varchar2(1000)

v_enameemp.ename%type := 'SCOTT'

vrt_empemp%rowtype

begin

v_sql_text := 'select * from emp e where e.ename = :ename'

execute immediate v_sql_text

into vrt_emp

using v_ename

dbms_output.put_line(v_ename || '的基本信息:')

dbms_output.put_line('工号:' || vrt_emp.empno)

dbms_output.put_line('工资:' || vrt_emp.sal)

dbms_output.put_line('入职日期:' || vrt_emp.hiredate)

end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11988085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存