`

SQL Server 2005存储过程(转载)

阅读更多
size=large]原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jerrysun.blog.51cto.com/745955/155313


原始出处:http://jerrysun.blog.51cto.com/745955/155313

作者信息:sw840227 的BLOG

唉,终于该开始数据操作了,累死我了。为什么非要写数据操作呢?其实写这个学习笔记之前是在使用存储过程操作数据的时候遇到了问题,为了记录这个问题,同时提醒自己要学习存储过程才写的这个笔记。言归正传,这个问题是什么呢?
  前面说了,我是在项目中遇到了使用存储过程的地方,所以才要写存储过程,开始写了一个存储过程,用来实现数据的插入操作,说白了就是添加数据。这个存储过程的代码如下:
  CREATE PROCEDURE PROC_INSERT_DATA_ID
        @DealerID varchar(50)
    AS
    BEGIN
        DECLARE @COUNT  INT   
       
        SET @COUNT = (SELECT COUNT(*) FROM myDATA_Details WHERE DealerID = @DealerID)
        IF (@COUNT>0)   
            BEGIN   
                DELETE FROM myDATA_Details WHERE DealerID = @DealerID   
                INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)   
            END   
        ELSE   
            BEGIN   
                INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)   
            END   
    END
  F5一下,创建成功,调用它插入数据,OK,没问题插入成功,达到了预期的目的。可是,我在建立第二个存储过程的时候,虽然将插入操作改为了更新,但是再像上面这么写就出错了,代码如下:
  CREATE PROCEDURE PROC_INSERT_DATA_DETAIL
        @DealerID varchar(50),
        @FieldName varchar(2000),
        @FieldValue varchar(2000)
    AS
    BEGIN
        DECLARE @Count INT
        SET @Count = (SELECT COUNT(*) FROM myDATA_Details WHERE DealerID = @DealerID)

        IF (@COUNT>0)
            BEGIN
                UPDATE myDATA_Details SET @FieldName = @FieldValue WHERE DealerID = @DealerID
            END
        ELSE
            BEGIN
                INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)
                UPDATE myDATA_Details SET @FieldName = @FieldValue WHERE DealerID = @DealerID
            END
    END
  语法OK,F5运行,也没有问题,兴奋啊,那就让它开始干活吧,咦,程序运行了呀,为什么没有更新呢,莫非是抛出异常了?赶紧,进Visual Studio 2005里Debug一下吧,走你,一路F11,没有问题啊,该调用的都调用了,也没有报错啊,那是怎么回事呢?存储过程?没道理吧!还是看看印度人是怎么写的吧,果然和我写的不一样,根据印度人的代码,对我建立的存储过程加以修改,修改完毕后再次运行程序,嗯,不错,这回终于是给我干活了。还是很有成就感的嘛,哈哈。
附:修改后的代码
  ALTER PROCEDURE PROC_INSERT_DATA_DETAIL
        @DealerID varchar(50),
        @FieldName varchar(2000),
        @FieldValue varchar(2000)
    AS
    BEGIN
        DECLARE @Count INT
        DECLARE @StrSQL VARCHAR(2000)
        SET @Count = (SELECT COUNT(*) FROM myDATA_Details WHERE DealerID = @DealerID)

        IF (@COUNT>0)
            BEGIN
                SET @StrSQL = 'UPDATE myDATA_Details SET '+ @FieldName + ' = ''' +@FieldValue + ''' WHERE DealerID = '+ @DealerID
                EXEC(@StrSQL)
            END
        ELSE
            BEGIN
                INSERT INTO myDATA_Details (DealerID) VALUES (@DealerID)
                SET @StrSQL = 'UPDATE myDATA_Details SET '+ @FieldName + ' = ''' +@FieldValue + ''' WHERE DealerID = '+ @DealerID
                EXEC(@StrSQL)
            END
    END

本文出自 “徘徊在c#,java,php之间” 博客,请务必保留此出处http://jerrysun.blog.51cto.com/745955/155313
[/size]
分享到:
评论

相关推荐

    sqlserver学习资料(转载!)

    SQL Server是一款由微软开发的关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。这篇学习资料集合了大师级人物的智慧结晶,对于想要深入理解和掌握SQL Server的人来说是一份宝贵的资源。 1. SQL ...

    sqlserver数据库优化总结的资料

    在提供的压缩文件中,"SQLSERVER 2005管理与开发 优化SQL Server数据库(转载).mht"可能是关于SQL Server 2005的管理与优化的综合文章,包含了很多实践经验和技巧;"SQL优化.xlsx"可能是对SQL查询优化的实例或数据...

    SQLserver入门教程ppt课件.pptx

    本资源为SQL Server入门教程ppt课件,涵盖了SQL Server的基本概念、安装、管理、数据库设计、数据表管理、视图与索引、T-SQL编程、事务、游标、存储过程、触发器、权限以及安全等方面的知识点。 1. 数据库的应用: ...

    Microsoft SQL Server数据库建模工具

    DataShow是一款基于.net Framework2.0的Microsoft SQL Server数据库建模工具,工具全部采用C#代码完成。该工具旨在利用自定义表字典的功能来设计强大的数据库控件或者页面,减少开发周期和代码量。 本工具具有如下...

    自己用vb.net写的一个SQLServer的SQLHelper类

    所以特地用vb.net写了一个仅支持SQLServer的SQLHelper类以方便使用,没做修改直接上传,需要的童鞋欢迎下载,稍做修改即可适用于其他数据库:支持查询数据类命令和修改数据类命令,支持存储过程调用,支持参数化查询...

    SQL笔试题(转载的)

    9. **存储过程(STORED PROCEDURE)**:预编译的SQL语句集合,可包含控制流语句,提高了代码重用性和安全性。 10. **触发器(TRIGGER)**:在特定事件(如INSERT、UPDATE或DELETE)发生时自动执行的SQL代码,用于...

    Visual_C++_+_SQL_Server数据库应用实例完全解析

    SQL Server是企业级的关系型数据库管理系统,广泛应用于数据存储、分析和报告。在C++中与SQL Server配合,开发者可以构建高性能的数据驱动应用程序。本书将涵盖连接到SQL Server数据库、执行SQL查询、处理结果集、...

    工资管理系统

    1. 数据存储:SQL Server是一个流行的数据库管理系统,用于存储和管理工资相关的所有数据,如员工信息、职位等级、工作小时、奖金、扣款等。通过创建表格(表),我们可以定义数据结构,如员工表、工资详情表等。 2...

    本人提供SQL语句大全(转载) 12009年04月28日 星期二 19:35SQL语句大全(转载)

    - 使用数据库内置函数和存储过程来提高执行效率。 综上所述,SQL作为数据库操作的核心语言,其语法的灵活运用和查询的优化是数据库管理和开发中不可忽视的重要环节。通过对上述知识点的理解和掌握,可以有效地提升...

    【数据库原理】MyShop 商城数据库设计(SQL server)

    声明:未经允许,请勿转载 MyShop商城是一个在线购物平台,致力于提供便捷的购物体验。为了满足用户需求,商城需要一个可靠、高效的数据库系统来管理商品、用户和订单信息。数据库系统应具备性能、可靠性和扩展性,...

    DataPie数据库导入导出工具v3.7源码

    支持SQL server、SQLite、ACCESS数据库的导入、导出、存储过程调用,支持EXCEL2007、EXCEL2003、ACCESS2007、 CSV文件导入数据库,支持EXCEL、CSV文件方式导出,支持数据拆分导出及自定义SQL查询与导出。

    OA办公自动化系统(asp.net)

    SQL Server 2005引入了存储过程、触发器、视图等高级功能,有助于提高数据的安全性和一致性。同时,其内置的 Reporting Services 和 Analysis Services 提供了商业智能功能,便于数据分析和报表生成。 标签"tag oa ...

    将MSSQL Server 导入/导出到远程服务器教程的图文方法分享

    1、打开本地企业管理器,先创建一个SQL Server注册来远程连接服务器端口SQL Server。步骤如下图: 图1:2、弹出窗口后输入内容。”总是提示输入登陆名和密码”可选可不选,如图2。图2:3、注册好服务器后,点击打开。...

    php调用mysql存储过程

    前面转载了一篇《php调用mysql存储过程的文章》经过测试,发现文章中的方法似乎不可行! 调用带有select语句的存储过程就出现 PROCEDURE p can’t return a result set in the given context的错误。...

    转载别人的博客

    BlogEngine.NET博客系统v2.5源码 拥有非常好的分层架构,原生态支持xml作为数据库,也可采用mssql作为数据库,是学习asp.net非常难得的开源系统。 更新: - Multi-author支持 ...- 可以选择XML和SQL Server数据存储

    【转载】NET平台下的架构开发(最全的).docx

    7. **数据访问层的实现** - 分别介绍三种不同的实现方式:Access+动态生成SQL、SQL Server+存储过程以及基于NBear的ORM实现。 8. **业务逻辑层的实现** - 解释业务规则的处理和封装。 9. **表示层的实现** - 展示...

    题库系统与试卷生成(毕业设计含论文).rar

    【描述】:“特别声明:转载希望作者本人允许。包括毕业论文,答辩ppt中期报告。”这表明该压缩包可能包含了整个毕业设计过程的重要组成部分。毕业论文是对整个项目研究的详细书面阐述,通常包括问题背景、设计目标...

    Laneser MSRS学习日志转载

    4. **报表发布与管理**:设计完成的报表可以通过Report Server进行发布,服务器可以存储、管理和分发报表。管理员可以控制访问权限,设定订阅,确保报表安全且及时地送达指定用户。 5. **报表服务器功能**:除了...

    转载的jsp信息发布系统

    在描述中提到的“MSSQL数据库”指的是Microsoft SQL Server,这是一个强大的关系型数据库管理系统,用于存储和管理信息,与JSP应用程序配合,提供数据存储和检索功能。 在该系统中,我们可以根据压缩包内的文件名...

    Linq体验系列文章打包

    5. **存储过程**:`LINQ to SQL语句之存储过程`章节可能详细讲解了如何在LINQ中调用和使用数据库的存储过程。 6. **组操作**:`Group By`、`Having`、`Exists`、`In`、`Any`、`All`和`Contains`这些关键字都是用于...

Global site tag (gtag.js) - Google Analytics