CREATE PROCEDURE [DeleteFromUsers]
(@name_1 [char],
@age_2 [char])AS DELETE [lyjqgds].[dbo].[users] WHERE
( [name] = @name_1 AND
[age] = @age_2)
GO在查询分析器中调用此过程并且正确传递了参数,后台也没提示错误,执行完毕之后,对应记录竟然没删除!!???
TRY了N 便,仍然如此,请各位帮忙
(@name_1 [char],
@age_2 [char])AS DELETE [lyjqgds].[dbo].[users] WHERE
( [name] = @name_1 AND
[age] = @age_2)
GO在查询分析器中调用此过程并且正确传递了参数,后台也没提示错误,执行完毕之后,对应记录竟然没删除!!???
TRY了N 便,仍然如此,请各位帮忙
解决方案 »
- sql 如何实现销售表与成本表的组合?
- 如何将数值类型合成规定的文本格式
- 有人用microsoft visio软件导出SQL Server数据库表字典的报表吗?
- 定义计算列的问题
- SQL SERVER跨服务器连接能够用到索引吗?
- 高手:如何在存儲過程中為另一個數據庫創建一個存儲過程?
- where id in(10000007,10000010)查不到数据,而单个可以查询到?
- 关于数据库死锁的问题,高手请进!!!
- SQL Server 的mdf文件过大如何处理?现在为22G
- 如何不显示(或只读) Reporting Services 的 参数
- 將數字轉成英文大寫的函數﹐誰能幫我修改一下啊?
- 关于遍历的实现,谢谢!
(@name_1 [char],
@age_2 [char])AS
select top 1 * form [lyjqgds].[dbo].[users] DELETE [lyjqgds].[dbo].[users] WHERE
( [name] = @name_1 AND
[age] = @age_2)
GO
进行测试看看有没有查数据出来先,要是查出了就说明调用了此存储过程
(@name_1 Varchar(50),--定义char时,只取参数的第一个字母,查无此条件,故不能删除
@age_2 Varchar(50))AS
Delete [lyjqgds].[dbo].[users]
Where [name] = @name_1 AND [age] = @age_2
GO
----
Exec DeleteFromUsers 'abc','23' --以前的@name_1 char 只接收了字母'a',故条件不符合!
[name] CHAR,
[age] CHAR
)INSERT INTO Users([name],[age]) SELECT 'AAA','20'
UNION ALL SELECT 'BBB','21'
UNION ALL SELECT 'BBB','21'
UNION ALL SELECT 'CCC','28'
UNION ALL SELECT 'CCC','28'
UNION ALL SELECT 'AAA','20'服务器: 消息 8152,级别 16,状态 9,行 6
将截断字符串或二进制数据。
语句已终止。改为:这样就可以写入到表中了
INSERT INTO Users(name,age) SELECT 'A','2'
UNION ALL SELECT 'B','1'
UNION ALL SELECT 'B','1'
UNION ALL SELECT 'C','2'
UNION ALL SELECT 'C','2'
UNION ALL SELECT 'A','2'(所影响的行数为 6 行)
SELECT * FROM Usersname age
---- ----
A 2
B 1
B 1
C 2
C 2
A 2(所影响的行数为 6 行)
CREATE PROCEDURE [DeleteFromUsers](
@name_1 [char],
@age_2 [char]
)
AS
DELETE Users WHERE [name]=@name_1 AND [age]=@age_2
GO测试一:
EXEC DeleteFromUsers 'A','2'
(所影响的行数为 2 行)
SELECT * FROM Users
name age
---- ----
B 1
B 1
C 2
C 2(所影响的行数为 4 行)测试二:EXEC DeleteFromUsers 'BC','1'(所影响的行数为 0 行)
测试三:
EXEC DeleteFromUsers 'BC','1'(所影响的行数为 2 行)name age
---- ----
C 2
C 2(所影响的行数为 2 行)
测试四:
EXEC DeleteFromUsers 'BC','2'
(所影响的行数为 0 行)综上所述:
char[(n)]
长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。将为使用 char 或 varchar 的对象被指派数据库的默认排序规则,除非用 COLLATE 子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页由于没有批定长度,所以执行以下语句INSERT INTO Users([name],[age]) SELECT 'AAA','20'
UNION ALL SELECT 'BBB','21'
UNION ALL SELECT 'BBB','21'
UNION ALL SELECT 'CCC','28'
UNION ALL SELECT 'CCC','28'
UNION ALL SELECT 'AAA','20'出现这样的错误信息服务器: 消息 8152,级别 16,状态 9,行 6
将截断字符串或二进制数据。
语句已终止。
在存储过程中,也只能接收到一位字符,可以从测试二和测试四中看出来
大家以后少用char,尽量用varchar 来替代