sql存储过程

关于数据库表字段类型与存储过程类型定义

无人久伴 提交于 2019-11-28 23:44:27
做开发已级有了三年多的时间,今天碰到一个很奇怪的现象。我们项目采用的是三层结构+Ado.net的框架模式。具体的框架运今暂不讨论,现在讨论最近遇到的一个问题。前台页面是通过Ajax请求到HttpHandler里面获取服务端数据。 通过监视得知前台的传递的参数是没有问题,里面的值也没有被截取,但是执行存储过程后的,到表里面查询出来的数据所有字段都保存首个字。数据库表里面的定义的字段类型是varchar类型,而在存储过程定义接收参数的时候,把该类型定义为nvachar,并且没有指明具体的长度。具体的表结构如下:执行SQL脚本 CREATE TABLE [dbo].[tbProcedure_Feedback]( [Id] [int] IDENTITY(1,1) NOT NULL, [CarId] [int] NOT NULL, [AgreeTransferPlace] [varchar](50) NOT NULL, [Descript] [varchar](200) NULL, [CarDescript] [varchar](200) NULL, [Managers] [varchar](50) NULL, [IsPay] [varchar](50) NULL, [OperName] [varchar](50) NOT NULL, [Created] [datetime] NOT

50种方法优化SQL Server

冷暖自知 提交于 2019-11-28 11:38:14
查询速度慢的原因很多,常见如下几种:      1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)      2、I/O吞吐量小,形成了瓶颈效应。      3、没有创建计算列导致查询不优化。      4、内存不足      5、网络速度慢      6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)      7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)      8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。      9、返回了不必要的行和列      10、查询语句不好,没有优化   可以通过如下方法来优化查询 :      1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.      2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)      3、升级硬件      4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段      5、提高网速;      6、扩大服务器的内存,Windows 2000和SQL

50种方法优化SQL Server

折月煮酒 提交于 2019-11-28 11:37:57
查询速度慢的原因很多,常见如下几种:      1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)      2、I/O吞吐量小,形成了瓶颈效应。      3、没有创建计算列导致查询不优化。      4、内存不足      5、网络速度慢      6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)      7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)      8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。      9、返回了不必要的行和列      10、查询语句不好,没有优化   可以通过如下方法来优化查询 :      1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.      2、纵向、横向分割表,减少表的尺寸(sp_spaceuse)      3、升级硬件      4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段      5、提高网速;      6、扩大服务器的内存,Windows 2000和SQL

JDBC的API详解之Connection

佐手、 提交于 2019-11-28 07:42:50
1.1.1 Connection:与数据库连接对象 1.1.1.1 作用一:创建执行SQL语句的对象 执行SQL语句对象: l Statement :执行SQL l CallableStatement :执行数据库中存储过程 l PreparedStatement :执行SQL.对SQL进行预处理。解决SQL注入漏洞。 1.1.1.2 作用二:管理事务 来源: https://blog.51cto.com/14473726/2431940

SqlHelper.cs

半腔热情 提交于 2019-11-27 07:03:51
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Collections; using System.Data.SqlClient; using System.Configuration; namespace Shuobo.DAL { /// <summary> /// 数据库的通用访问代码 /// 此类为抽象类,不允许实例化,在应用时直接调用即可 /// </summary> public abstract class SqlHelper { //获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改 public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.ConnectionStrings["pubsConnectionString"].ConnectionString; // 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数。 private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

MYSQL-5-存储过程

不想你离开。 提交于 2019-11-26 22:28:14
变量 全局变量前有@@字符,由系统定义和维护 select @@rowcount;--返回上一条语句执行的条数 select @@version;--返回当前SQL Server服务器的日期版本和处理器类型 局部变量前有@字符,由用户定义和维护 创建函数(了解) use school2; delimiter $$ create function fun_get_sage(str varchar(12)) returns char(12) begin return(select sage from student where sname=str); end; 调用: select fun_get_sage('李彤'); 存储过程 语句 if...then... else if...then... else... end if; label:while... do end while; label:loop end loop; case when...then... when...then... else... end case; 实例一 delimiter $$ create procedure pro_test2() begin select "ok"; end $$ call pro_test2(); 实例二 delimiter $$ create procedure pro

SQL并发数查询

时光毁灭记忆、已成空白 提交于 2019-11-26 21:04:17
--执行系统存储过程,查询登录名为sa的并发数,如果不指定登录名,则查询全部 exec SP_WHO 'sa' --查询master.dbo.sysprocesses表,其实SP_WHO存储过程也是封装了该表 select hostname,count(*) AS Count from master.dbo.sysprocesses group by hostname order by count(*) desc 转载于:https://www.cnblogs.com/ToughGuy/p/4756990.html 来源: https://blog.csdn.net/weixin_30314631/article/details/99121350

SQL语句大全

↘锁芯ラ 提交于 2019-11-26 11:53:23
1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密: select encrypt('原始密码') select pwdencrypt('原始密码') select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码') select pwdencrypt('原始密码') select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 3.取回表中字段: declare @list varchar(1000),@sql nvarchar(1000) select @list=@list+','+b.name from sysobjects a, syscolumns b where a.id=b.id and a.name='表A' set @sql='select '+right(@list,len(@list)-1)+' from 表A' exec (@sql) 4.查看硬盘分区: EXEC master .. xp_fixeddrives 5.比较A,B表是否相等: if ( select checksum_agg(binary_checksum

C#通用查询器

三世轮回 提交于 2019-11-26 00:20:27
很多通用查询器,对查询条件中的AND及OR的支持度不是很好,要么全部是AND要么全部是OR。笔者通过一段时间的摸索,终于完成了一个自己较为满意的通用查询器, 可以实现多条件的AND及OR,现将实现过程记录一下: 1、在App.config中添加数据库连接字符串。 <connectionStrings> <add name ="connString" connectionString="server=.;database=db_test;uid=sa;pwd=********;"/> </connectionStrings> 2、添加一个数据库操作帮助类,命名为DBHelper。 /// <summary> /// SQL数据库访问类 /// </summary> public static class DBHelper { private static SqlConnection conn = null; /// <summary> /// 连接对象 /// </summary> public static SqlConnection Connection { get { string connString = ConfigurationManager.ConnectionStrings["connString"].ConnectionString; if (conn ==