CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

关于调用存储过程(SQL SERVER)

楼主forever_chang(寒冬月夜裸奔狂)2002-01-07 15:41:10 在 MS-SQL Server / 基础类 提问

INSERT   INTO   jobs   (job_desc,min_lvl,max_lvl)  
   
  VALUES   ('Accountant',12,125)  
   
  SELECT   @@IDENTITY   AS   'Identity'  
   
  如何通过VB程序得到以上存储过程@@identity的值? 问题点数:50、回复次数:12Top

1 楼forever_chang(寒冬月夜裸奔狂)回复于 2002-01-07 15:41:57 得分 0

最好给出源码。Top

2 楼forever_chang(寒冬月夜裸奔狂)回复于 2002-01-07 15:51:09 得分 0

U   PTop

3 楼forever_chang(寒冬月夜裸奔狂)回复于 2002-01-07 16:07:30 得分 0

最好是用command对象调用的源码。Top

4 楼gmc007(江西的佬表)回复于 2002-01-07 16:51:49 得分 10

SELECT   @@IDENTITY   AS   'Identity'  
  有了这句,就可以通过记录集取值啊!  
  如果用OUTPUT参数,则要通过COMMAND对象和PARAMETER对象来取值了。  
  ===========  
  你搜索一下"存储过程",包准吓死你!Top

5 楼zhujiechang(小朱)回复于 2002-01-07 16:54:43 得分 10

首先在存储过程中设置@@identity为返回的参数,在VB中采用ADO连接,使用COMMAND对象,添加参数,设置为返回类型,在调用COMMAND对象执行后,就可从COMMAND的参数中取得@@identity的值。Top

6 楼bgxy(上兵伐谋)回复于 2002-01-07 16:59:20 得分 0

用COMMAND对象返回参数,是存储过程的  
   
   
   
   
  基础。Top

7 楼forever_chang(寒冬月夜裸奔狂)回复于 2002-01-07 17:06:12 得分 0

我是这样写的  
  ......  
  set   rs_id=cmmtemp.execute  
  id=rs_id("identity")  
  ......  
  cmmtemp.execute   执行都正常  
  但id=rs_id("identity")好像有问题。  
   
  Top

8 楼forever_chang(寒冬月夜裸奔狂)回复于 2002-01-07 17:08:33 得分 0

谁能给我一个完整的例子,谢谢!  
  作为一个初学者,我将不胜感激!Top

9 楼wzsswz(岌岌荆棘)回复于 2002-01-07 18:09:34 得分 10

forever_chang:  
      下面两个函数,只要稍做修改,即可用  
   
  Public   arrary_rpt()   As   String  
  Public   Function   connectstr()   As   String  
        connectstr   =   "Provider=SQLOLEDB.1;Password=super_dingfeng;"   _  
                                  "Persist   Security   Info=True;User   ID=sa;"   -  
                                  "Initial   Catalog=tfmsdb;Data   Source=dfserver"  
        psword   =   "super_dingfeng"  
  end   function  
   
  Public   Function   exec_procedure(sql   As   String,   Optional   i   As   Integer   =   0)   As   String  
        exec_procedure   =   ""  
        If   sql   =   ""   Then   Exit   Function  
        Dim   cnn1   As   ADODB.Connection  
        Dim   rst1   As   ADODB.Recordset  
        Set   cnn1   =   New   ADODB.Connection  
         
        Call   cnn1.Open(connectstr())  
        Set   rst1   =   New   ADODB.Recordset  
        rst1.ActiveConnection   =   cnn1  
        On   Error   GoTo   errorhandle  
        Call   rst1.Open(sql,   cnn1,   adOpenKeyset,   adLockReadOnly)  
              If   i   <>   555   And   i   <>   999   Then      
                          '返回存储过程中指定字段值,或指定变量值。  
                          '555表示不返回结果。  
                    If   rst1.RecordCount   =   -1   Then   exec_procedure   =   CStr(rst1.Fields(i).value)  
                    If   rst1.RecordCount   =   1   Then   exec_procedure   =   CStr(rst1.Fields(i).value)  
              End   If  
              If   i   =   999   Then     '返回多个值  
                    If   (rst1.RecordCount   =   1   Or   rst1.RecordCount   =   -1)   And   rst1.Fields.Count   >=   1   Then  
                            ReDim   arrary_rpt(rst1.Fields.Count)   As   String  
                            Dim   k   As   Integer  
                            For   k   =   0   To   rst1.Fields.Count   -   1  
                                  arrary_rpt(k)   =   rst1.Fields(k).value  
                            Next  
                      End   If  
              End   If  
        Set   rst1   =   Nothing  
        cnn1.Close  
        Set   cnn1   =   Nothing  
        Exit   Function  
  errorhandle:  
        Set   rst1   =   Nothing  
        Set   cnn1   =   Nothing  
        Exit   Function  
  End   Function  
   
  具体调用如下:  
   
          Call   exec_procedure("exec   this_month_receipt   '"   +   fm.Cbx3.Text   +   "'",   555)  
             
            'exec   this_month_receipt为存储过程名,  
            ’'"   +   fm.Cbx3.Text   +   "'为存储过程入口   参数,   fm为窗体变量。  
      至于你的具体存储过程,可以这样写:  
        create   procedure     kkk   as    
              declare   @myIdentity   as   varchar(30)  
              INSERT   INTO   jobs   (job_desc,min_lvl,max_lvl)  
                                      VALUES   ('Accountant',12,125)  
              set   @myIdentity     =     @@IDENTITY  
              SELECT   @myIdentity  
  不知是否合你所求。。。。。Top

10 楼crazymens(风)回复于 2002-01-07 21:01:25 得分 10

做成存储过程  
  Create   proc   kkk(参数)  
  as  
   
  set   nocount   on    
            declare   @myIdentity   as   varchar(30)  
              INSERT   INTO   jobs   (job_desc,min_lvl,max_lvl)  
                                      VALUES   ('Accountant',12,125)  
              set   @myIdentity     =     @@IDENTITY  
              SELECT   @myIdentity  
   
   
    然后再客户端调用就可以了  
   
   
  Top

11 楼crazymens(风)回复于 2002-01-07 21:02:06 得分 0

如果不行的话找我,crazy_dreams@263.netTop

12 楼dadi2001(大地)回复于 2002-01-07 21:07:17 得分 10

dim   cn   as   new   adodb.connection  
  dim   rs   as   new   adodb.recordset  
   
  rs.open   'usp_yoursp',cn  
  if   not   rs.eof   then  
  msgbox   rs("Identity")  
  Top

相关问题

  • ※ Asp 中调用 Sql Server 存储过程 ※
  • asp中调用sql server的存储过程
  • 怎样调用SQL SERVER 的存储过程?
  • 怎样在VB中调用一个SQL SERVER的存储过程???
  • 请问vc下如何调用SQL SERVER的存储过程?
  • 如何在SQL Server的存储过程中调用DLL?
  • DELPHI中关于调用SQL SERVER存储过程???(高分相送)
  • PB8上的存储过程的调用(SQL Server 2000)
  • pb中如何调用sql server 2000的存储过程????????
  • ADO 调用SQL SERVER 存储过程 问题:请进

关键词

  • 存储过程
  • rst
  • myidentity
  • 调用
  • identity
  • cnn
  • 参数
  • lvl
  • arrary
  • 值

得分解答快速导航

  • 帖主:forever_chang
  • gmc007
  • zhujiechang
  • wzsswz
  • crazymens
  • dadi2001

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo