存储过程转义
㈠ ORACLE 存储过程中的....是什么意思如下 ' || '''' || 'yyyy-mm-dd' || '''' || '
|| 是字符串连接符号
'''' 四个单引号,第1,4个单引号是正常的单引号,第2个单引号是转义字符,第3个单引号,编译后想保留的单引号。
最终目的 就是to_char(a.txntimestamp, 'yyyy-mm-dd') 这样的格式
这里头不是直接写sql文,而是用字符串拼接成新的sql字符串。
㈡ 存储过程中执行sql语句时如何转义双引号
exec('update'+@tableName+'set'+@columnName+'=replace('+@columnName+',''"'','''')')
嵌套拼接字符中的单引号处理很麻烦的
㈢ ORACLE数据库存储过程,转义符问题
sql_de1varchar2(200)中200之太小了,超出delete语句的长度,将其改为sql_de1varchar2(2000)
㈣ SqlServer 中存储过程:money类型与char类型的转换问题
自己写的么?
1有余滑些地方没必要4个单引号,3个就行,在sql中字符串的拼接语句中要表示1个单引号就得用两个单引号,前一个表示转义的意思,编程语言都有转义一说
2因为是字符串拼接的,而@FormerPrice这些是money类型的,如果不转换,就默认要把字符串转换成money类型了,就会出错。所以得把@FormerPrice之类的转换成字符类型的,存储过程修改如下
ALTER PROCEDURE [dbo].[SearchMerchandise]
@Category varchar(50),
@Brand varchar(50),
@Type varchar(50),
@FormerPrice money,
@LatterPrice money
AS
BEGIN
declare @QueryString varchar(100)
set @QueryString = 'select * from Merchandise where Category = ''' + @Category + ''' and Brand = ''' + @Brand + ''' '
SET NOCOUNT ON;
if @Type<>''
set @QueryString = @QueryString+' and Type=''' +@Type+ ''''
if @FormerPrice<>'' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow between '''+ convert(varchar(20),@FormerPrice) + ''' and ''' + convert(varchar(20),@LatterPrice) + ''''
if @FormerPrice<>''竖渣腊 and @LatterPrice=''
set @QueryString = @QueryString+' and PriceNow >=''' + convert(varchar(20),@FormerPrice) + ''''
if @FormerPrice='' and @LatterPrice<>''
set @QueryString = @QueryString+' and PriceNow <=''' + convert(varchar(20),@LatterPrice) + ''''
exec(@QueryString)
END
因为没有表结果不能进行测试,所以可能会出错,如果梁念出错就把表结果发一下,进行测试