mssql server EXEC和sp_executesql

ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于
Update,Insert,Delete 语句
执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,对于这种更新操作
用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功时返回的却是-1,这种情况跟我们平时的思维方式有点差距所以应该好好的注意了,例如对数据库共添加一个数据表的Create操作,当创建数据表成功时返回-1,如果操作失败的话往往会发生异常,所以执行这种操作时最好用try–catch–语句来容错。

mssql sql 字符串截取实例代码

,EXEC的使用

例如用ExecuteNonQuery()方法执行create操作

关于字符串截取我们用substring函数

2,sp_executesql的使用

SqlConnection conn = new SqlConnection(Data Source=.;Initial
Catalog=PSDB;Integrated Security=SSPI);

substring ( expression , start , length ) 返回字符、binary、text 或
image 表达式的一部分。 参数 expression
是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。
start 是一个整数,指定子串的开始位置。 length
是一个整数,指定子串的长度。

MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和

string str = CREATE TABLE aaa ( +[ID] [int] IDENTITY (1, 1) NOT NULL
, +[BasicID] [int] NULL , +[AdoptedName] [varchar] (50) COLLATE
Chinese_PRC_CI_AS NULL , +[AdoptedSex] [char] (2) COLLATE
Chinese_PRC_CI_AS NULL , +[AdoptBirthday] [smalldatetime] NULL ,
+[AdoptedType] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
+[ApprTime] [smalldatetime] NULL , +[Remark] [varchar] (500)
COLLATE Chinese_PRC_CI_AS NULL +) ON [PRIMARY] ;

left ( character_expression , integer_expression )
返回从字符串左边开始指定个数的字符。 参数 character_expression
字符或二进制数据表达式。character_expression
可以是常量、变量或列。character_expression 必须是可以隐式地转换为
varchar 的数据类型。否则,请使用 cast 函数显式转换
character_expression。 integer_expression 是正整数。如果
integer_expression 为负,则返回空字符串。 返回类型 varchar

sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没

SqlCommand comm = new SqlCommand(str, conn);int i = 10;try{conn.Open();i
= comm.ExecuteNonQuery();conn.Close();}catch (Exception
ex){Response.Write(ex.Message);}

right ( character_expression , integer_expression )
返回字符串中从右边开始指定个数的 integer_expression 字符。 参数
character_expression 由字符数据组成的表达式。character_expression
可以是常量、变量,也可以是字符或二进制数据的列。 integer_expression
是起始位置,用正整数表示。如果 integer_expression
是负数,则返回一个错误。 返回类型 varchar

有。还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供

Response.Write(i.ToString());

下面看实例有一列的值为

了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码。EXEC

title aaaa,bb,cc bb,ff,gg ii

在某些情况下会更灵活。除非您有令人信服的理由使用EXEC,否侧尽量使用

现在想截取成这样 aaaa bb cc bb ff gg ii

sp_executesql.

也就是分成了3个字段了请根据,来取 因为需求可能会是
要第2个逗号之前且第一个逗号之后的内容所以根据逗号来判别更好!

1,EXEC的使用

if object_id(‘tempdb..#tb’) is not nulldrop table #tbgocreate table
#tb (title varchar(50)) goinsert into #tb select ‘aaaa,bb,cc’ union
all select ‘bb,ff,gg’ union all select ‘ii’go

EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。以

selecttitle1 = parsename(replace(title,’,’,’.’), len(title) –
len(replace(title,’,’,”))+1),title2 = parsename(replace(title,’,’,’.’),
len(title) – len(replace(title,’,’,”))),title3 =
parsename(replace(title,’,’,’.’), len(title) –
len(replace(title,’,’,”))-1),title4 = parsename(replace(title,’,’,’.’),
len(title) – len(replace(title,’,’,”))-2)from #tb

下所讲的都是第二种用法。

/*title1 title2 title3 title4————– ————–
————– ————– aaaa bb cc nullbb ff gg nullii null null
null

发表评论

电子邮件地址不会被公开。 必填项已用*标注