里面我有这样的功能:传递带引号的字符串的函数存储过程
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[SE_VALOR] (@valor int, @verd char(20), @fals char(20))
RETURNS char(20)
AS
BEGIN
DECLARE @resposta char(20)
---Check for unit, if meters(MT), convert it to feet(FT)
IF @valor=1
BEGIN
set @resposta = @verd
END
ELSE
BEGIN
set @resposta [email protected]
END
RETURN(@resposta )
END
后来才知道有这个存储过程:
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[SP_pn_FichaTecnica_Motor_Web]
@IDVersao int
AS
DECLARE @Comando nvarchar(4000)
DECLARE @DIESEL varchar(10)
DECLARE @GASOLINA varchar(10)
SET @DIESEL = 'Diesel'
SET @GASOLINA = 'Gasolina'
--
set @Comando = 'SELECT somefield1, somefield2, somefield3,
dbo.SE_VALOR(TblMotor.TipoInjeccao,@DIESEL,@GASOLINA) AS TipoInjeccao
FROM sometable
WHERE IDVersao = @IDVersao'
EXEC sp_executesql @Comando, N'@IDVersao int, @DIESEL varchar(10),@GASOLINA varchar(10)',@IDVersao,@DIESEL,@GASOLINA
print(@Comando)
我如何通过增值经销商@DIESEL和@ GASOLINA没有给我错误?
如果我尝试与执行SP:
exec SP_pn_FichaTecnica_Motor_Web 27828
我得到:
消息102,15级,状态1,32号线 附近有语法错误
更改sp_ usp_所有我的用户存储过程:) – mjpramos
为了简化本文,我缩小了我正在使用的查询,但它是一英里长。 错误总是: 消息102,级别15,状态1,行32在 附近的语法不正确,然后打印查询停止在左侧outter加入 – mjpramos
看起来错误可能是别的 - 现在删除调用该功能,并重新尝试没有它。 – Naomi