2009-09-11 9 views
0

HI,TSQL/SP instruction INSERT avec le texte et les valeurs

J'ai une instruction d'insertion dans une procédure stockée qui exige que les données de valeur à une combinaison de texte et les variables/entrées. Cependant, mon gestionnaire SQL donne une erreur sur cette valeur "camp" lorsque je tente de le compiler.

Voici l'instruction telle qu'elle existe actuellement;

BEGIN TRAN 
    INSERT INTO TBL_DONATIONS ([donations_MemberID], [donation_Ref], [donations_Debit]) VALUES (@tmp_Id, "camp"[email protected]_Id+"/Key"[email protected]_IDENTITY, @tmp_Pledge) 
    COMMIT 

J'imagine qu'il ya probablement un cas de moi en utilisant le mauvais format pour les concaténer parties formant ' "camp" + @ + tmp_Id "/ touche" + @ tmp_IDENTITY' ???????

Toute aide est la bienvenue.

Merci!

+0

pourquoi voudriez-vous poser une question sur une erreur, mais ne comprend pas la message d'erreur réel? –

Répondre

3

Quelle est l'erreur exacte que vous obtenez?

Avec sur de plus amples informations, vous devrez peut-être de jeter les variables suivantes, parce que la convention de nommage que vous utilisez me faire croire qu'ils sont des entiers, et vous les concaténer avec des cordes:

  • @tmp_Id
  • @tmp_IDENTITY

Essayez ceci: 'camp' + CAST (@tmp_Id varchar) + '/ Key' + CAST (@tmp_IDENTITY varchar)

+0

Oui en effet ce sont des entiers. J'ai juste supposé/espéré qu'ils seraient implicitement convertis de la même manière que dans C# /.Net – Munklefish

+2

+1 pour remarquer qu'il utilise des entiers. –

1

Vous devez préparer les valeurs avant de les coller dans la clause VALUES, ou la remplacer par une requête INSERT INTO ... SELECT .... Ce sera plus facile.

EDIT: Et d'utiliser des guillemets simples, pas de guillemets.

+0

Je ne sais pas ce que vous entendez par là. S'il vous plaît, expliquez. Merci. – Munklefish

+0

INSÉRER DANS TBL_DONATIONS ([donations_MemberID], [donation_Ref], [donations_Debit]) SELECT @tmp_Id, 'camp' + @tmp_Id + '/ Key' + @tmp_IDENTITY, @tmp_Pledge –

+0

Merci pour les détails supplémentaires, mais pourquoi est-il SELECT plutôt que des valeurs? – Munklefish

3

Je pense que vous devez utiliser 'au lieu de ""

EDIT: Si vous voulez "" pour les valeurs que vous avez à

SET QUOTED_IDENTIFIER OFF 

SET QUOTED_IDENTIFIER

+0

cela fonctionne: _print "ceci est un test" + 'de guillemets simples'_ Cependant, vous devez convertir les variables numériques en chaînes avant de les concaténer, comme le dit @Yoav. –

+0

Avec quelles propriétés de votre connexion ce test est-il effectué? –

+0

par défaut via SQL Server Management Studio –

2

Utilisez des guillemets simples' pas "

Questions connexes