`
leon1509
  • 浏览: 533220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]PROC中的4种动态SQL简介

阅读更多
[url]http://oracle.chinaitlab.com/exploiture/38243.html
[/url]  

  (1)动态SQL1: 不能是查询(SELECT)语句,并且没有宿主变量.
  
  用法:拼一串动态SQL语句,并用EXECUTE IMMEDIATE执行,如:
  EXEC SQL EXECUTE IMMEDIATE "CREATE TABLE dyn1 (col1 VARCHAR2(4))";
  

  (2)动态SQL2: 不能是查询(SELECT)语句,并且输入的宿主变量数目是知道的,
  
  用法:拼一串动态SQL语句,用PREPARE,EXECUTE语句执行.
  strcpy(c_sql, "DELETE FROM EMP WHERE EMPNO = ");
  EXEC SQL PREPARE sql_stmt FROM :c_sql;
  EXEC SQL EXECUTE sql_stmt USING :emp_number;
  

  (3)动态SQL3: 用于创建动态查询, 并且要查询的字段及输入的宿主变量数目是知道的
  
  用法: 拼一串动态SQL语句,用PREPARE分析该语句,并要定义一个CURSOR进行取值
  
  如:如要查询的数据按一年12月放到12张表中。表名为user_fee_1mon, user_fee_2mon,....可采用动态SQL3来进行查询
  strcpy(c_sql,"select c_user_id,c_user_name,to_char(t_date,'yyyy/mm/dd hh:mi:ss'),n_fee\n");
  strcat(c_sql,"from USER_FEE_");
  strcat(c_sql,ac_mon);
  strcat(c_sql," \n where c_user_id = :v1");
  
  EXEC SQL PREPARE s FROM :c_sql;
  
  EXEC SQL DECLARE cur_user_fee CURSOR FOR s;
  
  EXEC SQL OPEN cur_user_fee USING :ac_user_id;
  
  while(1)
  {
  
  EXEC SQL FETCH cur_user_fee into :c_user_id,:c_user_name,:c_date,:n_fee);
  
  if (sqlca.sqlcode < 0)
  {
  /*FETCH CURSOR失败*/
  printf("fetch cursor cur_user_fee fail,sqlcode=%ld,sqlserr=%s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
  }
  if( sqlca.sqlcode == SQLNOTFOUND)
  {
  break;
  }
  }
  EXEC SQL CLOSE cur_user_fee;
  

  (4)动态SQL4:要处理的字段及输入的宿主变量数目和主变量的类型事先是不知道的,如:
  INSERT INTO EMP (<unknown> VALUES (<unknown>
  
  是最复杂的动态SQL,很少用,在此不做介绍。
分享到:
评论

相关推荐

    Proc SQL by Example, Using SQL within SAS

    根据提供的文件信息,我们可以深入探讨如何在SAS环境中利用Proc SQL进行数据处理和分析。这份文档似乎是一本关于如何在SAS中运用SQL语言的指南书籍。下面将详细阐述各章节涉及的重要知识点。 ### 一、简介 #### ...

    PLSQL开发中动态SQL的使用方法.doc

    PLSQL 开发中动态 SQL 的使用方法 在 PL/SQL 开发过程中,使用 SQL,PL/SQL 可以实现大部分的需求,但是在某些特殊的情况下,在 PL/SQL 中使用标准的 SQL 语句或 DML 语句不能实现自己的需求,比如需要动态建表或...

    存储过程中怎么动态执行sql语句

    描述部分提到“动态的实现表名的动态的配置及动态的配置所对应的列名”,这进一步明确了本文将着重讨论如何在存储过程中动态地设置表名和列名,从而实现更加灵活的数据处理逻辑。 #### 标签理解 标签“动态执行SQL...

    CREATE PROC [dbo].[proc_insert].sql

    根据表查询条件自动生成insert into sql语句,支持where条件,支持表各种类型字段。打印出来的字符不会被截断。sp执行完后,直接copy出来就可以在ms sql里执行。

    PROC/C++课程

    PROC简介 3. 宿主变量与指示变量 4. 嵌入SQL语句

    Proc sql beyond the basic using sas

    这里讲解了如何在PROC SQL中编写条件语句、循环和变量声明,使查询更具动态性和适应性,同时也介绍了错误处理机制,帮助读者学会如何调试和优化SQL代码。 ### 第五章:创建、填充和删除表 本章详细介绍了如何使用...

    Oracle动态SQL4方法分析与应用.pdf

    根据给定文件的信息,以下是对“Oracle动态SQL4方法分析与应用.pdf”文档中所涉及知识点的详细说明: Oracle动态SQL技术: 动态SQL技术允许在程序执行时根据用户的输入构造SQL语句,它在编写程序时不需要确定具体的...

    oracle关于动态SQL的使用

    在Oracle数据库的PL/SQL编程中,动态SQL是一种强大的技术,允许开发者在程序运行时根据条件构造和执行SQL语句。这种技术对于处理不确定的查询结构或者需要在运行时决定执行什么操作的情况非常有用。本篇文章主要介绍...

    Proc_ProjectPzBase.sql

    Proc_ProjectPzBase.sql

    Proc_BudgetSituationDep.sql

    Proc_BudgetSituationDep.sql

    Proc_GetBaseYear.sql

    Proc_GetBaseYear.sql

    Proc_GetDep.sql

    Proc_GetDep.sql

    Proc_ProjectBase.sql

    Proc_ProjectBase.sql

    Proc_BudgetSituationSum.sql

    Proc_BudgetSituationSum.sql

    Proc_t2.sql

    Proc_t2.sql

    Proc_ProjectBaseSum.sql

    Proc_ProjectBaseSum.sql

    Proc_ProjectDep.sql

    Proc_ProjectDep.sql

Global site tag (gtag.js) - Google Analytics