foxpro 怎样asp 调用存储过程程

& & -- 建表& & CREATE TABLE sale_report (& & sale_date DATE NOT NULL ,& & sale_item VARCHAR(2) NOT NULL ,& & sale_money DECIMAL(10,2) NOT NULL,& & PRIMARY KEY(sale_date, sale_item)& & );& & -- 测试数据& & DECLARE& & v_begin_day DATE;& & v_end_day DATE;& & BEGIN& & v_begin_day := TO_DATE('', 'YYYY-MM-DD');& & v_end_day
:= TO_DATE('', 'YYYY-MM-DD');& & WHILE v_begin_day < v_end_day LOOP& & INSERT INTO SALE_REPORT VALUES(v_begin_day, 'A',
1 );& & INSERT INTO SALE_REPORT VALUES(v_begin_day, 'B',
2 );& & INSERT INTO SALE_REPORT VALUES(v_begin_day, 'C',
3 );& & v_begin_day := v_begin_day &#43; 1;& & END LOOP;& & END;& & /& & -- 测试函数& & CREATE OR REPLACE FUNCTION HelloWorldFunc& & RETURN VARCHAR2& & AS& & BEGIN& & RETURN 'Hello World!';& & END;& & /& & -- 测试存储过程& & CREATE OR REPLACE PROCEDURE HelloWorld2 (& & p_user_name IN
VARCHAR2,& & p_out_val
VARCHAR2,& & p_inout_val IN OUT VARCHAR2& & ) AS& & BEGIN& & dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');& & p_out_val := 'A';& & p_inout_val := 'B';& & END HelloWorld2;& & /& & -- 测试返回结果集的函数& & create or replace package pkg_HelloWorld as& & -- 定义ref cursor类型& & type my& & --函数申明& & function getHelloW& & end pkg_HelloW& & /& & CREATE OR REPLACE package body pkg_HelloWorld as& & function getHelloWorld return myrctype& & IS& & return_& & BEGIN& & OPEN return_cursor FOR 'SELECT ''Hello'' AS a, ''World'' AS B FROM dual';& & return return_& & END getHelloW& & end pkg_HelloW& & /& & 以上为数据库表、测试数据、存储过程脚本& & 以下为 C#例子代码& & using S& & using System.Collections.G& & using System.L& & using System.T& & using System.D& & using System.Data.OracleC& & namespace A0170_Oracle.Sample& & {& & /// & & /// 用于 访问 Oracle 数据库 存储过程与函数 的例子。& & ///& & /// 注意:这个例子所使用的 表 和 数据, 请参考项目下的 Schema.sql 文件。& & ///& & /// & & class CallOracleFuncProc& & {& & /// & & /// Oracle 的数据库连接字符串.& & /// & & private const String connString =& & @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.210)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=TEST;Password=TEST123";& & public void TestCallFuncProc()& & {& & // 建立数据库连接.& & OracleConnection conn = new OracleConnection(connString);& & // 打开连接.& & conn.Open();& & // 调用 Oracle 函数.& & CallFunc(conn);& & // 调用 Oracle 返回结果集的函数& & CallFuncWithTable(conn);& & // 调用存储过程& & CallProcedure(conn);& & // 关闭数据库连接.& & conn.Close();& & }& & /// & & /// 测试 调用 Oracle 函数.& & /// & & private void CallFunc(OracleConnection conn)& & {& & // 创建一个 Command.& & OracleCommand testCommand = conn.CreateCommand();& & // 定义需要执行的SQL语句.& & mandText = "SELECT HelloWorldFunc() FROM dual";& & // 执行SQL命令,结果存储到Reader中.& & OracleDataReader testReader = testCommand.ExecuteReader();& & // 处理检索出来的每一条数据.& & while (testReader.Read())& & {& & // 将检索出来的数据,输出到屏幕上.& & Console.WriteLine("调用函数:{0}; 返回:{1}",& & mandText, testReader[0]& & );& & }& & // 关闭Reader.& & testReader.Close();& & }& & /// & & /// 测试 调用 Oracle 返回结果集的函数.& & /// & & private void CallFuncWithTable(OracleConnection conn)& & {& & // 创建一个 Command.& & OracleCommand testCommand = conn.CreateCommand();& & // 定义需要执行的SQL语句.& & mandText = "pkg_HelloWorld.getHelloWorld";& & // 定义好,本次执行的类型,是存储过程.& & mandType = CommandType.StoredP& & // 定义好,我这个参数,是 游标 &#43; 返回&#20540;.& & OracleParameter para = new OracleParameter("c", OracleType.Cursor);& & para.Direction = ParameterDirection.ReturnV& & testCommand.Parameters.Add(para);& & // 执行SQL命令,结果存储到Reader中.& & OracleDataReader testReader = testCommand.ExecuteReader();& & // 处理检索出来的每一条数据.& & while (testReader.Read())& & {& & // 将检索出来的数据,输出到屏幕上.& & Console.WriteLine("调用函数:{0}; 返回:{1} - {2}",& & mandText, testReader[0], testReader[1]& & );& & }& & // 关闭Reader.& & testReader.Close();& & }& & /// & & /// 测试执行存储过程.& & /// & & /// & & private void CallProcedure(OracleConnection conn)& & {& & // 创建一个 Command.& & OracleCommand testCommand = conn.CreateCommand();& & // 定义需要执行的SQL语句.& & mandText = "HelloWorld2";& & // 定义好,本次执行的类型,是存储过程.& & mandType = CommandType.StoredP& & // 定义要查询的参数.& & // 第一个参数,是输入的.& & testCommand.Parameters.Add(new OracleParameter("p_user_name", "HeiHei"));& & // 第2个参数,是输出的.& & OracleParameter para2 = new OracleParameter("p_out_val", OracleType.VarChar, 10);& & para2.Direction = ParameterDirection.O& & testCommand.Parameters.Add(para2);& & // 第3个参数,是既输入又输出的.& & OracleParameter para3 = new OracleParameter("p_inout_val", OracleType.VarChar, 20);& & para3.Direction = ParameterDirection.InputO& & para3.Value = "HAHA";& & testCommand.Parameters.Add(para3);& & // ExecuteNonQuery 方法,表明本次操作,不是一个查询的操作。将没有结果集合返回.& & // 返回的数据,将是 被影响的记录数.& & int insertRowCount = testCommand.ExecuteNonQuery();& & // 存储过程执行完毕后,取得 output 出来的数据.& & String pa2 = testCommand.Parameters["p_out_val"].Value.ToString();& & String pa3 = testCommand.Parameters["p_inout_val"].Value.ToString();& & Console.WriteLine("调用 {0} 存储过程之后, p_out_val={1}; p_inout_val={2}", mandText, pa2, pa3);& & }& & }& & }
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
论文写作技巧Visual FoxPro 6.0命令一览表_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Visual FoxPro 6.0命令一览表
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢第一部分:Visual FoxPro OLE DB Provider
说起 Fox,第一个印象就是DBF 数据表格,将近20年的发展历程,不知道有多少系统使用DBF存放数据。转入 .NET 平台以后,怎样访问 Fox系列数据自然是很多开发人员关心的问题。
在 Visual FoxPro 7以前,微软只提供了Fox的ODBC的驱动程序。通过ODBC访问Fox数据效率比较低,更要命的是Visual FoxPro 3中增加的数据库容器(Database Container,简称DBC)中的许多特性都不被支持,这些特性包括存储过程、触发器、默认值、约束、参照完整性等。
为了迎合.NET时代的到来,微软在Visual FoxPro 7 发布时一同推出了Visual FoxPro OLE DB Provider程序,它具有以下特性:(注意:目前微软只在Visual FoxPro 7专业版里提供此程序!)
数据访问更有效率
支持访问DBC里的存储过程
支持Visual FoxPro 7的新特性数据库事件(Database Container Events)
支持DBC里的触发器、默认值、约束、参照完整性
有了OLE DB Provider,我们就可以使用ADO.NET的 System.Data.OleDb 来访问Fox数据。介绍ADO.NET的资料很多,我们不必累述,这里只介绍三个比较特别问题:
设定数据工作期(Data Session)环境,例如对NULL值的处理模式、时间值的处理模式、字符串比较模式等
调用无返回值的存储过程
调用有返回值的存储过程
设定数据工作期(Data Session)环境
用过Fox的朋友都知道,应用程序的起始部位都会使用一大堆SET 语句设定默认数据工作期的工作环境;延伸到ADO.NET,我们希望设定&连接&通道的工作环境,这就需要发送有关SET语句。需要传送命令,在ADO.NET里可以调用Command对象ExecuteNonQuery()方法。(CODE #1)
//C#代码 设定数据工作期环境OleDbConnection Conn=new OleDbConnection("Provider=vfpoledb.1;Data Source=c:\\data\\testdata.Exclusive=1");oConn.Open();OleDbCommand Command=new OleDbCommand();oCommand.Connection=oCmandText="SET EXACT ON\r\nSET DELETED ON\r\nSET Null OFF";oCommand.ExecuteNonQuery();
调用无返回值的存储过程
Visual FoxPro 3引入了DBC的概念,从技术上使得DBF系列的数据表格上升到数据库的高度,支持数据库的典型特征,包括存储过程。这里所谓的存储过程用Fox的眼光看就是存放在DBC里面的函数或过程,与普通的Fox代码没有什么区别。
需要注意的是,Visual FoxPro 7所提供的 OLE DB Provider 不支持规范的存储过程调用方式。更明确的说,不能使用类似调用SQL Server 中存储过程的方式调用DBC的存储过程。
例如,在DBC里有这样的存储过程:(CODE #2)
*DBC 里的一个存储过程,作用是写入一行记录到LOG表中PROCEDURE LogMsg(cMsg as String)&&&&INSERT INTO LOG(eventime,logmsg) values(DATETIME(),m.cMsg) ENDPROC
这是一个无返回值的过程,调用它的过程类似发送语句到数据库,于是具体处理是这样的:(CODE #3)
//C#代码 调用无返回值的存储过程string cMsg=&写入一行日志&;mandText="LogMsg(&"+cMsg+&&)&;oCommand.ExecuteNonQuery();
调用有返回值的存储过程
在DBC有这样一个存储过程:(CODE #4)*DBC里的一个存储过程,作用是合计指定国家的销售净额FUNCTION Get_Sum_Order_Net(cCountry as String) as Currency LOCAL iSum as CurrencySELECT sum(order_net) as order_net from orders WHERE cust_id in(SELECT cust_id from customer WHERE Country=m.cCountry) INTO CURSOR tempiSum=temp.order_netUSE IN tempRETURN iSumENDFUNC
我们记得在ADO.NET的Command对象里有一个用于返回单个值的方法ExecuteScalar(),具体如下:(CODE #5)
//C#代码 调用有返回值的存储过程string lcCommand=& Get_Sum_Order_Net(&UK&)&;OleDbCommand Command=new OleDbCommand(lcCommand,oConn);Object Result=oCommand.ExecuteScalar();
Fox是最快的桌面数据库,很多年来微软把主要的精力放在了Fox自身的变革上,忽视对外的访问接口(DBF表格结构简单,不少系统都能够直接访问)。现在,为了.NET中能够访问Fox系列数据源,微软发布了 OLE DB Provider,满足日常开发工作的需要。我们也看到,这个版本的程序在处理时与标准ADO.NET的做法有所不同,还好微软已经明确表示,将升级Visual FoxPro OLE DB Provider,使它能为.NET提供更完美支持!
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
论文写作技巧→ sql存储过程,如何使用select调用
&&共有<b style="color:#ff人关注过本帖主题:sql存储过程,如何使用select调用您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
foxpro常用命令.doc43页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:100 &&
foxpro常用命令,foxpro 命令,foxpro 查询命令,foxpro数据库命令汇总,foxpro命令大全,foxpro命令详解,foxpro 删除命令,foxpro select命令,visual foxpro 命令,foxpro update命令
你可能关注的文档:
··········
··········
2.2 FoxPro的命令工作方式 2.2.1 FoxPro的命令与命令子句 1. FoxPro中的命令写法: 以命令动词开头,后跟若干子句。 【例如】 USE STU LIST FOR 姓名 ”张三” &&假定“姓名”为当前表中的字段名 2. FoxPro的四种常用命令子句及相应的功能描述: (1)范围子句,用来指明当前的操作所涉及的记录范围。 (2)For条件子句,指明当前的操作只对指定范围中哪些符合条件的记录进行。 (3)While条件子句,指明当前的操作只对指定范围中哪些符合条件的记录进行。 (4)Fields字段子句,用以指明当前的操作涉及到库文件的哪些字段。 3. FoxPro的范围子句的四种写法: (1)ALL,表示对库文件的全部记录进行操作。 (2)NEXT
,表明对库文件中从当前记录开始的连续n条记录进行操作。 (3)RECORD
,指明操作对象是库文件的第n条记录。 (4)REST,指明对库文件中从当前记录起到文件尾的全部记录进行操作。 【例如】假定库文件STU.DBF中有20条记录,依次执行下列命令,指出输出结果: USE STU.DBF ? RECNO
&& 显示1 LIST && 显示全部记录 LIST RECORD 3 && 显示第3条记录 ? RECNO
&& 显示3 LIST NEXT 10 && 显示第3~12条记录(共10条) ? RECNO
&& 显示12 LIST REST && 显示第12~20条记录,从当前起至余下记录 ? RECNO
&& 显示21 此处为文件尾,无记录信息 4. FoxPro命令和子句的书写规则 (1)以命令动词开头; (2)命令动词与子句、子句与子句间用空格间隔,各子句次序可任意调整; (3)命令动词与子句中的保留字(含函数名)都可简写为前4个字符,但不提倡; (4)一行对应一条命令,命令过长可用续行符“;”(分号)续行。 【例如】以命令“LIST FIELDS 学号, 姓名 FOR 姓名 ”张三””为例,说明命令的书写规则。 第一条规则,动词开头:
正在加载中,请稍后...

我要回帖

更多关于 asp 调用存储过程 的文章

 

随机推荐