手机
当前位置:查字典教程网 >编程开发 >数据库其他 >带参数的sql和不带参数的sql存储过程区别第1/2页
带参数的sql和不带参数的sql存储过程区别第1/2页
摘要:带参数的sql语句,在数据库端,执行的是execsp_executesqleg:execsp_executesqlN'insertintoL...

带参数的sql语句,在数据库端,执行的是

exec sp_executesql

eg:

exec sp_executesql N'insert into LCS_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( @Model_GUID,@Model_Name,@Model_Desp,@Model_IsSys)', N'@Model_GUID uniqueidentifier,@Model_Name nvarchar(50),@Model_Desp nvarchar(500),@Model_IsSys bit', @Model_GUID = 'F3CD1369-58C0-4A1F-AF88-05FCF734E079', @Model_Name = N'测试实体模型', @Model_Desp = N'实体模型描述', @Model_IsSys = 0

没有带值的sql语句。其执行是直接的sql语句。

insert into lcs_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( 'F3CD1369-58C0-4A1F-AF88-05FCF734E079','name','desp',1 )

看上面的执行代码,你会不会认为是下面的高效啊?说实话我也没有仔细测试过。可是据我所知,sqlserver能够缓存参数信息和sql编译后的信息,第一句带参 数的sql因为前面一部是不变的(红色部分)。所以能够缓存起来(就像执行存储过程一样)。而下面的一句sql。因为value后面的值总是不固定,因此 sqlserver总是认为是不同的sql语句。因此每次都要重新编译生成。

以上结论来源于下面的测试代码。

System.Data.SqlClient.SqlParameter[] parameters = {

new SqlParameter("@Model_GUID", SqlDbType.UniqueIdentifier),

new SqlParameter("@Model_Name", SqlDbType.NVarChar,50),

new SqlParameter("@Model_Desp", SqlDbType.NVarChar,500),

new SqlParameter("@Model_IsSys", SqlDbType.Bit)

};

parameters[0].Value = new Guid("F3CD1369-58C0-4A1F-AF88-05FCF734E079");

parameters[1].Value = "测试实体模型";

parameters[2].Value = "实体模型描述";

parameters[3].Value = false;

string connStr = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=officially;Data Source=LCSNB"SQL2K";

string cmdStr = "insert into LCS_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( @Model_GUID,@Model_Name,@Model_Desp,@Model_IsSys)";

System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr);

System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(cmdStr);

cmd.Connection = conn;

foreach (var item in parameters)

{

cmd.Parameters.Add(item);

}

当前1/2页12下一页阅读全文

【带参数的sql和不带参数的sql存储过程区别第1/2页】相关文章:

很全的SQL中文解释代码第1/2页

SQL注入之基于布尔的盲注详解

海量数据库的查询优化及分页算法方案集合1/2第1/2页

使用SQL Mail收发和自动处理邮件中的扩展存储过程简介

SQL SERVER 里的错误处理(try catch)

交叉表查询sql语句

SQL Server数据库性能优化技术第1/2页

access mysql mssql 随机 10条数据的sql语句 原创

以前架征途时的合区的SQL语句代码备份

数据库设计经验谈

精品推荐
分类导航