Pessoal estou com um problema, estou construindo uma Stored Procedure para realizar uma busca, sendo que os parãmetros serão quantos o usuário quiser, Dai estou tendo que usar XMl no SQL Server 2005, o código é o seguinte:
CREATE
PROCEDURE obtemImoveisBuscaAvancada
@xmlCaracteristicas
varchar(5000),
@xmlBairro
varchar(5000),
@xmlTipo
varchar(5000),
@iddoc1
int,
@iddoc2
int,
@iddoc3
int
AS
EXEC SP_XML_PREPAREDOCUMENT @iddoc1 OUTPUT, @xmlTIPO
EXEC SP_XML_PREPAREDOCUMENT @iddoc2 OUTPUT, @xmlCaracteristicas
EXEC SP_XML_PREPAREDOCUMENT @iddoc3 OUTPUT, @xmlBairro
SELECT IMOVEL.IMOVEL_ID, IMOVEL_CARACTERISTICA.IMOVEL_CARACTERISTICA, IMOVEL_CARACTERISTICA.IMOVEL_CARACTERISTICA_VALOR, IMOVEL.TIPO_COMPLEMENTO
FROM IMOVEL LEFT OUTER JOIN IMOVEL_CARACTERISTICA
ON IMOVEL.IMOVEL_ID = IMOVEL_CARACTERISTICA.IMOVEL LEFT OUTER JOIN IMOVEL_TIPO
ON IMOVEL_TIPO.IMOVEL = IMOVEL.IMOVEL_ID LEFT OUTER JOIN IMOVEL_BAIRRO
ON IMOVEL.IMOVEL_ID = IMOVEL_BAIRRO.IMOVEL
WHERE IMOVEL_CARACTERISTICA.IMOVEL_CARACTERISTICA IN (
SELECT text
FROM OPENXML(@iddoc2,'/RAIZ/CARACTERISTICA',2)
WHERE text IS NOT NULL)
AND IMOVEL_TIPO.IMOVEL_TIPO_ID IN(
SELECT text
FROM OPENXML(@iddoc1,'/RAIZ/TIPO_ID',2)
WHERE text IS NOT NULL)
AND IMOVEL_BAIRRO.CEP_BAIRRO IN(
SELECT text
FROM OPENXML(@iddoc3,'/RAIZ/ID_BAIRRO',2)
WHERE text IS NOT NULL)
Quando vou gerar essa stored procedure ele dá uma mensagem dizendo:
Operand type clash: ntext is incompatible with int
Quando dou um Duplo clique na mensagem o SQL Server seleciona o SELECT, mas não encontrei nada de errado no SELECT, parece que ele tá reclamando quando executo a Stored Procedure para preparar os documentos, Mas segundo pesqueisas que realizeis e artigos que andei lendo é dessa forma mesmo que executa a preparação dos documentos no OpenXML. O que pode estar errado? Alguém me daria uma luz?
Se chiar resolvesse sal de fruta não morria afogado