我有一个执行
的存储过程DECLARE
@PalabraResultante VARCHAR(100),
@FiltroAdicional VARCHAR(MAX),
@FiltroAdicional2 VARCHAR(MAX),
@Sql NVARCHAR(MAX)
SET @Sql = 'INSERT INTO TMP_SEMANTICA_OFERENTE (IdSede, IdProceso, Nombre, NombreEmpresa, Departamento, FechaInicio, DescripcionVacante, IdDepartamento, IdGrupoOcupacional1, IdGrupoOcupacional2, IdGrupoOcupacional3, IdSalarioRango, IdTipoContrato, IdNivelEstudio, IdJornada, IdIndustria, Titulo, Cargo1, Cargo2, Cargo3, TipoLocalizacion, LocalizacionId, Aplica, NombreCiudad, IdSesion, FechaInsercion)
SELECT IdSede, IdProceso, Nombre, NombreEmpresa, Departamento, FechaInicio, DescripcionVacante, IdDepartamento, IdGrupoOcupacional1, IdGrupoOcupacional2, IdGrupoOcupacional3, IdSalarioRango, IdTipoContrato, IdNivelEstudio, IdJornada, IdIndustria, Titulo, Cargo1, Cargo2, Cargo3, TipoLocalizacion, LocalizacionId, Aplica, NombreCiudad, IdSesion, FechaInsercion
FROM TMP_VACANTES_MATCHING_FILTRADO
WHERE ((IdSesion = '''+@IdSesion+''') AND ('
SET @FiltroAdicional = ' OR ('
SET @FiltroAdicional2 = ' OR ('
DECLARE cBusqueda CURSOR FOR
SELECT * FROM dbo.Split(@CadenaBusqueda,'')
OPEN cBusqueda
FETCH cBusqueda INTO @palabraResultante
WHILE (@@FETCH_STATUS = 0) BEGIN
SET @Sql = @Sql + ' CONTAINS(Nombre,'''+@palabraResultante+''') AND'
SET @FiltroAdicional = @FiltroAdicional + ' CONTAINS(DescripcionVacante,'''+@palabraResultante+''') AND'
SET @FiltroAdicional2 = @FiltroAdicional2 + ' CONTAINS(Titulo,'''+@palabraResultante+''') AND'
FETCH cBusqueda INTO @palabraResultante
END
CLOSE cBusqueda
DEALLOCATE cBusqueda
SET @Sql = SUBSTRING(@Sql,1,LEN(@Sql)-4)+')'
SET @FiltroAdicional = SUBSTRING(@FiltroAdicional,1,LEN(@FiltroAdicional)-4)+')'
SET @FiltroAdicional2 = SUBSTRING(@FiltroAdicional2,1,LEN(@FiltroAdicional2)-4)+')'
SET @Sql = @Sql + @FiltroAdicional+' '+@FiltroAdicional2 +' )'
EXEC (@SQL)
如果我用以下方法调用此存储过程
EXEC spName
一切正常
但是当我在另一个存储过程中调用存储过程时,它不起作用。
我该怎么办?
由于
答案 0 :(得分:0)
看起来你在做一个过滤器?但过滤器应该是OR(名称类似于'%' + @ searchString +'%'或描述类似于'%' + @ searchString +' %&#39)。也许我在这方面不正确。
即便如此,请查看以下模式:
INSERT INTO TMP_SEMANTICA_OFERENTE
(IdSede,IdProceso,Nombre,NombreEmpresa,
Departamento,FechaInicio,Des0cripcionVacante,
IdDepartamento,IdGrupoOcupacional1,
11,IdGrupoOcupacional2, IdGrupoOcupacional3,IdSalarioRango,
IdTipoContrato,IdNivelEstudio,IdJornada,IdIndustria,
Titulo,
Cargo1,
Cargo2,
Cargo3,
TipoLocalizacion,
LocalizacionId,
Aplica,
NombreCiudad,
IdSesion,
FechaInsercion)
SELECT IdSede,
IdProceso,
Nombre,
NombreEmpresa,
Departamento,
FechaInicio,
DescripcionVacante,
IdDepartamento,
IdGrupoOcupacional1,
IdGrupoOcupacional2,
IdGrupoOcupacional3,
IdSalarioRango,
IdTipoContrato,
IdNivelEstudio,
IdJornada,
IdIndustria,
Titulo,
Cargo1,
Cargo2,
Cargo3,
TipoLocalizacion,
LocalizacionId,
Aplica,
NombreCiudad,
IdSesion,
FechaInsercion
FROM TMP_VACANTES_MATCHING_FILTRADO
WHERE ((IdSesion = @IdSesion)
AND EXISTS
(SELECT 1
FROM dbo.Split(@CadenaBusqueda,'') Nombre
WHERE CONTAINS(Nombre,@palabraResultante)
OR CONTAINS(DescripcionVacante,@palabraResultante)
OR CONTAINS(Titulo,@palabraResultante))
答案 1 :(得分:0)
我真的不知道它发生了什么
我刚刚更改了调用存储过程的顺序,它运行正常。