Je suis nouveau à cette activité de procédure stockée et je crois que c'est simple, tout simplement pas familier avec la syntaxe ou comment revenir. Je passe un ID de paramètre et je voudrais retourner des informations sur cet ID, mais cela pourrait provenir de l'une des deux tables. En fonction de la table dépend de quelles colonnes je retourne.Choisissez parmi deux tables avec paramètre dans la procédure stockée
ALTER PROCEDURE name
@ID varchar (40)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @result int
IF exists (SELECT id, name, state
FROM tab1
WHERE tab1.id = @ID
)
begin
/* return somehow, maybe as a temp table from previous check */
end
else (SELECT id, name, country, state
FROM tab2
WHERE tab2.id = @ID
)
begin
/* return information from tab2 instead */
end
end
go
vérifie si elles existent dans un tableau la meilleure façon, ou devrait-ce vraiment une jointure? Mes compétences sql sont nouvelles et je ne suis pas sûr de ce qui est disponible dans les procédures stockées.
Comment est-ce que je renvoie l'information? Mon Java y accédant attend cela comme le deuxième jeu de résultats dans cette procédure. (Non, je n'ai pas compris le premier jeu de résultats) Le premier jeu de résultats sera sensiblement le même, vérifier entre deux tables stockées dans des bases de données différentes mais impliquera un peu plus, je voulais juste que celui-ci fonctionne en premier.
Merci d'avance pour votre aide.
Que feriez-vous si le même ID apparaissait dans les deux tables? –
L'ID doit être unique sur les deux tables. L'un serait pour les nationaux et les autres internationaux. Je l'ai eu pour bien fonctionner en répétant la déclaration de sélection, mais ne serait-ce pas "doubler" le temps, et ne pourrait-il pas être plus rapide avec le stocker comme un temp? Donc 'INTO # tmpNA' et ensuite récupérer avec' SELECT * FROM #tmp NA' – bbotz
Non, il n'y a pas besoin d'une table temporaire. Elle ajoutera une étape supplémentaire et ralentira la requête – ClearLogic