电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

SQL中调用RCLE存储过程

  • 资源ID:492018210       资源大小:69.42KB        全文页数:6页
  • 资源格式: DOCX        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

SQL中调用RCLE存储过程

SQL Server 调用Oracle的存储过程收藏aLa原文如下:通过SQL Linked Server 执行Oracle 存储过程小结1举例我们可以通过下面的方法在SQL Server中通过Linked Server 来执行Oracle存储过程。(1) Oracle PackagePACKAGE Test_PACKAGE ASTYPE t_t is TABLE of VARCHAR2(30)INDEX BY BINARY_INTEGER;PROCEDURE Test_procedure1(p_BATCH_ID IN VARCHAR2,p_Number IN number,p_MSG OUT t_t,p_MSG1 OUT t_t);END Test_PACKAGE;PACKAGE BODY Test_PACKAGE ASPROCEDURE Test_procedure1(p_BATCH_ID IN VARCHAR2,p_Number IN number,p_MSG OUT t_t,p_MSG1 OUT t_t)ASBEGINp_MSG(1):='c'p_MSG(2):='b'p_MSG(3):='a'p_MSG1(1):='abc'RETURN;COMMIT;EXCEPTIONWHEN OTHERS THENROLLBACK;END Test_procedure1;END Test_PACKAGE;(2)在SQL Server中通过Linked Server 来执行 Oracle 存储过程declare BatchID nvarchar (40)declare QueryStr nvarchar (1024)declare StatusCode nvarchar(100)declare sql nvarchar(1024)set BatchID='AAA'SET QueryStr='CALL GSN. Test_PACKAGE.Test_procedure1( ""'+BatchID+""',''' '4"”,resultset 3, p_MSG,resultset 1, p_MSG1)'(3)执行结果(a)select sql='SELECT StatusCode=p_msg FROM OPENQUERY (HI4DB_MS,”'+ QueryStr+'")'exec sp_executesql sql,N'StatusCode nvarchar(100) output',StatusCode outp utprint StatusCode答案:StatusCode= ' a'(b)select sql='SELECT top 3 StatusCode=p_msg FROM OPENQUERY (HI4DB_MS,'”+QueryStr+”')'exec sp_executesql sql,N'StatusCode nvarchar(100) output',StatusCode outputprint StatusCode答案:StatusCode= ' a'(c)select sql='SELECT top 2 StatusCode=p_msg FROM OPENQUERY (HI4DB_MS,'"+QueryStr+"')'exec sp_executesql sql,N'StatusCode nvarchar(100) output',StatusCode outputprint StatusCode答案:StatusCode= ' b'(d)select sql='SELECT top 1 StatusCode=p_msg FROM OPENQUERY (HI4DB_MS,'"+QueryStr+"')'exec sp_executesql sql,N'StatusCode nvarchar(100) output',StatusCode outputprint StatusCode答案:StatusCode= ' c'(e)SET QueryStr='CALL GSN. Test_PACKAGE.Test_procedure1( ""'+BatchID+""',''''4"”,resultset 1, p_MSG1,resultset 3, p_MSG)'-(注意这里 p_MSG1 和 p_MSG 交换次序了)EXEC('SELECT p_msg1 FROM OPENQUERY (HI4DB_MS,”'+QueryStr+"')') select sql='SELECT StatusCode=p_msg1 FROM OPENQUERY (HI4DB_MS,”'+ QueryStr+”')'exec sp_executesql sql,N'StatusCode nvarchar(100) output',StatusCode outputprint StatusCode答案:StatusCode=' abc '2上述使用方法的条件(1) Link Server要使用 Microsoft 的 Driver (Microsoft OLE DB Provider for Oracle )(2) Oracle Package 中的Procedure 的返回参数是 Table类型,目前table 只试成功一个栏位。(3) SQL Server 的 Store Procedure 调用 Oracle Procedure 时,返回参数名字必须和 Pr ocedure 相同。3上述方法的要点如果要实现" Oracle SQL Server数据库”之间的 Trans处理,则 Oracle的Proce dure 不要有 Commit,rollback等语句,让 SQL Server 的 Store Procedure去控制整个 Trans 何日c commit 。(2)假如返回参数大于 1个,返回参数的次序可以调换,调用时只返回第一个出现的返回参数,如上面的执行结果(e)o但是输入参数和返回参数的顺序不能调换。resultset n, p_MSG1 ,这里的n ,表示返回表的行数。N可以大于等于实际的行数,但不能小于实际的行数,会报错。(4)假如返回表有多行记录,执行select sql='SELECT StatusCode=p_msg FROM OPENQUERY (HI4DB_MS,”'+ QueryStr+'")'exec sp_executesql sql,N'StatusCode nvarchar(100) output',StatusCode outp utprint StatusCode, StatusCode中的值为最后一行记录的值,如执行结果(a)。4动态SQL语句(1)普通SQL语句可以用Exec执行eg: Select * from MCITYExec('select * from MCITY)sp_executesql N'select * from tableName'-请注意字符串前一定要加N(2)字段名,表名,数据库名之类作为变量时,必须用动态 SQLeg: declare FielsName varchar(20)declare sqls nvarchar(1000)set FielsName = 'CITY'Select FielsName from MCITY-错误Exec('select ' + FielsName + ' from MCITY ')-请注意加号前后的单引号的边上要加空格set sqls='select' + FielsName + ' from MCITY 'exec sp_executesql sqls当然将字符串改成变量的形式也可declare s varchar(1000)set s = 'select ' + FielsName + ' from MCITY'Exec(s)- 成功exec sp_executesql s -此句会报错declare s Nvarchar(1000)-注意此处改为 nvarchar(1000)set s = 'select ' + fname + ' from from MCITY'Exec(s)- 成功exec sp_executesql s -止匕句正确(3)输出参数 eg: declare num intdeclare sqls nvarchar(1000) declare strTableName nvarchar(55)set strTableName='MCITY'set sqls='select count(*) from ' +strTableNameexec (sqls)如何能将exec执行的结果存入变量num中declare num intdeclare sqls nvarchar(1000)declare strTableName nvarchar(55)set strTableName='MCITY'set sqls='select a=count(*) from '+strTableNameexec sp_executesql sqls,N'a int output',num outputselect num(注:以上 SQL在sv-02,Qservice 下测试通过。)删除重复数据:delete top(1) from table where name in( select name from table group byname having count(name)>1 )SELECT *FROM table WHERE (id IN(SELECT MAX(id) FROM table GROUPBY name)

注意事项

本文(SQL中调用RCLE存储过程)为本站会员(公****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.