2017-10-16 15 views
-4

Je fais une révision dans SQL Server et j'ai une question que j'essaye de résoudre, je suis censé créer une procédure stockée qui affiche tous les détails du nom de branche, livre code, et la quantité en main, la procédure stockée prend le paramètre appelé @BranchName. Je suis également censé utiliser EXEC pour appeler cette procédure avec une valeur pour le paramètre.Procédures stockées & SQL Server

Ceci est ma déclaration à ce jour (je sais que c'est faux et ne fonctionne pas une raison quelconque, je ne peux pas travailler dehors)

CREATE PROCEDURE BranchDetails 
    SELECT 
     B.BookCode, BR.BranchName, I.OnHand 
    FROM 
     BOOK, BRANCH, INVENTORY 
    WHERE 
     BranchName = 'BookCode' 
+3

Tout d'abord, étiquette correctement. C'est soit SQL Server ou MySQL, ne peut pas être les deux. Deuxièmement, avez-vous lu la documentation sur la façon de créer des procédures stockées? Ce n'est même pas une syntaxe valide. – Eric

+1

[Mauvaises habitudes à lancer: en utilisant les anciens JOINs] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. aspx) - que l'ancien style * la liste des tables * style séparé par des virgules a été remplacé par la syntaxe * proper * ANSI 'JOIN' dans l'ANSI - ** 92 ** SQL Standard (** il y a 25 ans **) et son l'utilisation est déconseillée –

Répondre

2

MSSQL Syntaxe

-- ================================================ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
    -- Add the parameters for the stored procedure here 
    <@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
    <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0> 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2> 
END 
GO 

pour résoudre votre problème.

CREATE PROCEDURE BranchDetails @BranchCode varchar(20) 
as 
BEGIN 

SELECT B.BookCode, BR.BranchName, I.OnHand 
FROM BOOK, BRANCH, INVENTORY 
WHERE BranchCode = @BranchCode 

END 

Pour exécuter

exec BranchDetails 'Disneyland' 
+0

Oh oui, je vois votre montage, mais est-il là où il est correct d'être un paramètre? – Mart00000

+0

Oui, il semble bien fonctionner, juste la clause WHERE que j'utilise ne fonctionne pas parce que le nom de la branche doit être le paramètre – Mart00000

+0

le modifier à votre goût .. – maSTAShuFu