Stored procedures Sybase ASE-插入到Station i存储过程中,字符串格式化中出现问题

Stored procedures Sybase ASE-插入到Station i存储过程中,字符串格式化中出现问题,stored-procedures,insert,sybase,ase,Stored Procedures,Insert,Sybase,Ase,我在格式化@p_f_字段变量时遇到以下问题,我得到了错误: Could not execute statement. Incorrect syntax near ‘+’ Sybase error code=102, SQLState=”42000” Severity Level=15, State=181, Transaction State=1 Line 7 我的存储过程: create proc dbo.sp_m_efi_dw_full_dsa_table_load_im ( -- par

我在格式化@p_f_字段变量时遇到以下问题,我得到了错误:

Could not execute statement.
Incorrect syntax near ‘+’
Sybase error code=102, SQLState=”42000”
Severity Level=15, State=181, Transaction State=1
Line 7
我的存储过程:

create proc dbo.sp_m_efi_dw_full_dsa_table_load_im ( -- parameter examples:
@p_skm_name varchar(4096),
@p_usr_name varchar(4096),
@p_t_name_dsa varchar(4096),
@p_t_name_bas varchar(4096),
@p_f_name varchar(4096),
@p_f_field varchar(4096)
)
as begin
declare @sql varchar(4096)
if @p_skm_name is not null
begin
if @p_usr_name is not null
begin
set @sql='TRUNCATE TABLE '+@p_skm_name+'.'+@p_usr_name+'.'+@p_t_name_dsa
exec (@sql)
end
end
set @sql='INSERT INTO '+@p_skm_name+'.'+@p_usr_name+'.'+@p_t_name_dsa+' '+@p_f_name+
' VALUES '+@p_f_field
exec (@sql)
end
execute BAS_efi.dbo.sp_m_efi_dw_full_dsa_table_load_im
@p_skm_name         = 'B_ef',
@p_usr_name         = 'dbo',
@p_t_name_dsa       = 'a_log',
@p_t_name_bas       = 'a_log',
@p_f_name           = '(NEWFIELD1)',
@p_f_field          = '('+char(39)+'daf9af01-6bc2-11e-b23182b0623e'+char(39)+')'
我对存储过程的调用:

create proc dbo.sp_m_efi_dw_full_dsa_table_load_im ( -- parameter examples:
@p_skm_name varchar(4096),
@p_usr_name varchar(4096),
@p_t_name_dsa varchar(4096),
@p_t_name_bas varchar(4096),
@p_f_name varchar(4096),
@p_f_field varchar(4096)
)
as begin
declare @sql varchar(4096)
if @p_skm_name is not null
begin
if @p_usr_name is not null
begin
set @sql='TRUNCATE TABLE '+@p_skm_name+'.'+@p_usr_name+'.'+@p_t_name_dsa
exec (@sql)
end
end
set @sql='INSERT INTO '+@p_skm_name+'.'+@p_usr_name+'.'+@p_t_name_dsa+' '+@p_f_name+
' VALUES '+@p_f_field
exec (@sql)
end
execute BAS_efi.dbo.sp_m_efi_dw_full_dsa_table_load_im
@p_skm_name         = 'B_ef',
@p_usr_name         = 'dbo',
@p_t_name_dsa       = 'a_log',
@p_t_name_bas       = 'a_log',
@p_f_name           = '(NEWFIELD1)',
@p_f_field          = '('+char(39)+'daf9af01-6bc2-11e-b23182b0623e'+char(39)+')'

关于如何正确设置变量@p_f_字段格式的任何建议,或者关于如何执行这个简单的INSERT INTO过程的任何其他建议?

您能在执行@sql语句之前打印出来吗?可能会有帮助。你能在过程中填充+char39而不是调用吗?这很好:在B_ef.dbo.a_log NEWFIELD1中插入char39+'daf9af01-6bc2-11e-b23182b0623e'+char39,直到我将+char39放入@p_f_字段。当我使用'VALUES'+char39+@p_f_field+char39Ok时,它也会起作用。谢谢,如果我把这个放进去,它对我来说是有效的:。。。值“+char40+char39+@p_f_field+char39+char41但是!当我想在@p_f_字段中放入更多字符串时,我会遇到格式化问题,例如@p_f_字段='daf','deb',任何想法都将非常感谢: