CREATE PROCEDURE find
@tablename char(20),/查询的表名
@truename char(20) /查询的条件 AS
set nocount on
begin
declare @sql as varchar(200)
set @sql=' select * from '+@tablename +'where truename='+cast( @truename as char(20))
print @sql
EXEC(@sql)
end
GO
这个过程执行时如果表中是数字就没问题,如果是字符就出错,要怎么处理,好像是如果能给条件加上单引号就行了,但不知如何加,或者有没有其它办法?谢谢!! 比如需要查询的列的内容为:
10
20
50
B
A
30
20
查到数字是没问题,一查到字母就报错,表中该字段是CHAR(20)类型
@tablename char(20),/查询的表名
@truename char(20) /查询的条件 AS
set nocount on
begin
declare @sql as varchar(200)
set @sql=' select * from '+@tablename +'where truename='+cast( @truename as char(20))
print @sql
EXEC(@sql)
end
GO
这个过程执行时如果表中是数字就没问题,如果是字符就出错,要怎么处理,好像是如果能给条件加上单引号就行了,但不知如何加,或者有没有其它办法?谢谢!! 比如需要查询的列的内容为:
10
20
50
B
A
30
20
查到数字是没问题,一查到字母就报错,表中该字段是CHAR(20)类型
解决方案 »
- 求跨库更新指导
- 小问题,各位进来看一下!!1
- 如何逐级展开bom 高手请进 用过程或函数实现
- 请问验证方式的问题
- 高分请教关于数据库格式的简单问题!!!!!!!!!!!
- 参数传递来的 字符串 拆分后 再 循环插入 该怎么写?
- 笔记本安装SQL Server 2000老出问题
- 关于Job Schedule 的问题
- Microsoft and MERANT DataDirect Enable Java Connectivity to SQL Server
- 50分求救:一个关于去掉SQL SERVER登陆框的问题,请各位老师指点,谢谢!一定给分.
- 这个SQL语句为何总报错?
- opendatasource疑问
====
set @sql=' select * from '+@tablename +'where truename='''+cast( @truename as char(20))+'''
数字没有报错是因为隐式转换了。
====
set @sql=' select * from '+@tablename +'where truename='''+cast( @truename as char(20))+''''
这样就可以了