SQL 连接字符串问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 00:24:57
存储过程:
create proc p
@s varchar(100)
as
select * from table where s=@s
go
大家知道上面这个存储过程肯定没问题,那我换了种方式执行,却出现错误,谁能解答一下,请写出答案。
create proc p
@s varchar(100)
as
declare @str='select * from table where s='+@s
exec(@str)
go
这样执行总是报错,比如我执行:exec p @s='pl'
报错pl是无效列名

问题:
1.你在引用变量的时候没有申明,而是直接用。
2.你在引用变量组成SQL语句的时候少了单引号。 注意SQL语句中当'为常量的时候里面要''才能打印出一个'。
3.附值要用set关键词

修改:
create proc p
@s varchar(100)
as
declare @str varchar(500)
set @str='select * from table where s='''+@s+''''
exec(@str)
go

这样执行就可以了

参数默认是作为字符串的,如果字符串相加就必须要用两个引号代表边界,改成这样

declare @str varchar(200)
set @str='select * from table where s='''+@s+''''
exec(@str)

'''' 代表一个引号,前后外边的引号代表字符串边界,中间的两个引号代表一个引号字符。

@str 你都没声明局部变量 怎么给它赋值!!

create proc p
@s varchar(100)
as
declare @str varchar(100)
set @str='select * from table where s='+ @s
exec(@str)
go

从你的方法中可以得出
不是你不知道 只是你不想去解决而已
这样的问题 你自己是很清楚错在哪
我的验证如下 -- 请相互之间多多交流
--正解如下:
create procedure pro_data
@s varchar(100)
as
declare