Jump to content

Duvida em SQL


Juin
 Share

Recommended Posts

Boas, estou a programar em SQL e não estou a conseguir fazer o seguinte, espero q algum me ajude:

ALTER PROCEDURE dbo.sx
@Sx varchar(30)
AS
SET NOCOUNT ON;

DECLARE @a as int
set @a = 1

DECLARE @b as varchar(max)

SELECT @b = 'SELECT campos FROM '+@Sx+' WHERE id = '+convert(varchar(3), @a)

EXEC (@b)

estou a usar exec pois passo o nome da table por parametro,

o id desta maneira tenho que converter para varchar.

Agora quero é incrementar o @a

tentei assim

SET @a = @a + 1 mas nao é possivel pois dá erro de converter para vchar

algum ajuda??

Link to comment
Share on other sites

Tens ai uma plica a mais, troca

SELECT @b = 'SELECT campos FROM '+@Sx+' WHERE id = '+CONVERT(VARCHAR(3), @a)+'

por

SELECT @b = 'SELECT campos FROM '+@Sx+' WHERE id = '+CONVERT(VARCHAR(3), @a)

Pedro Martins

Não respondo a duvidas por PM

Link to comment
Share on other sites

Tentei assim

'SET '+@a+' = '+convert(varchar(3), @a)+' + 1'

'SET '+convert(varchar(3), @a)+' = '+convert(varchar(3), @a)+' + 1'

'SET '+@a+' = '+convert(varchar(3), @a+1)

em todos obtive erros de conversão ...

Link to comment
Share on other sites

Continuo sem perceber o porquê dessa soma ai.., para somares a variável @a na tua string, essa variável já tem de ir lá declarada..

Se o teu objectivo for criar um ciclo tens de fazer de forma diferente.

Pedro Martins

Não respondo a duvidas por PM

Link to comment
Share on other sites

O meu objectivo é passar estas variáveis para xml

e ter algo assim

<root>
<subs>
  <sub></sub>
  <sub>
   <subsubs>
    <subsub></subsub>
   </subsubs>
  </sub>
  </subs>
</root>

e por isso em caso de ter os subsubs que nem todos têm faço assim

SELECT @b = 'SELECT text as [@tipo_text], input as [@tipo_input], input_id as [@tipo_id], genS as [@tipo_s],  
			CASE
			WHEN campos IS NOT NULL 
			THEN
				--all tipo camps
				(	 
					SELECT campos as [@tipo_camps] FROM '+@Sch+' WHERE id = '+CONVERT(VARCHAR(3), @a)+' FOR XML PATH(''subsub''), TYPE, ROOT(''subsubs'')
				)
			END  
		FROM '+@Sch+' FOR XML PATH(''sub''), TYPE, ROOT(''subs'')'
Link to comment
Share on other sites

Sim eu sei, mas não dá porque tenho que aplicar dentro da variável @b e ai dá conflito de varchar para inteiro.

Diz me uma coisa, se passar como parametro o nome de uma tabela não posso fazer select sem ser numa variável para depois executar não´é?

Link to comment
Share on other sites

É possivel fazer algo do género disto para escrever para xml

SELECT text as [@text], input as [@input], input_id as [@in_id] from Evento WHERE campos IN
			(SELECT campos as [@camps] FROM Evento FOR XML PATH('campo'), TYPE, ROOT('campos') ) FOR XML PATH('tipo'), TYPE, ROOT('tipos')

o resultado que procuro com isso é

<tipos>
<tipo>
  <campos>
   <campo>
   </campo>
  </campos>
</tipo>
</tipos>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.