Avatar billede cogitans Nybegynder
21. juni 2007 - 18:53 Der er 9 kommentarer og
2 løsninger

Konstruktion+kald af stored procedure

Hvordan laves en stored procedure i VS2005, og hvordan kaldes den bagefter?

Kaldet (/sql'en) skal være: "udtræk alle rows med id=1" f.eks.. Jeg bruger SQL Server og c#....
Avatar billede arne_v Ekspert
21. juni 2007 - 19:10 #1
Uden VS er det:

CREATE PROCEDURE myproc AS

SELECT * FROM dintabel WHERE id = 1

GO
Avatar billede cogitans Nybegynder
21. juni 2007 - 19:47 #2
Skal den slutte med "GO" ?

Defaultproceduren i VS2005 er denne:

CREATE PROCEDURE dbo.StoredProcedure1
    /*
    (
    @parameter1 int = 5,
    @parameter2 datatype OUTPUT
    )
    */
AS
SELECT *
    /* SET NOCOUNT ON */
    RETURN

Og den var jeg nemlig ikke helt sikker på. Men overordnet ligner den jo godt nok dit givne eksempel.
Avatar billede arne_v Ekspert
21. juni 2007 - 22:45 #3
Det skal den hvis man opretter den i OSQL. Det virker sikker uden i VS.
Avatar billede cogitans Nybegynder
22. juni 2007 - 12:24 #4
Nu har jeg lavet en stored procedure, som ser således ud:

CREATE PROCEDURE dbo.StoredProcedure1 //før stod der ALTER PRO...
AS
SELECT * FROM Persons WHERE Position='Arbejder'
RETURN

og jeg kalder den således:

<table>
      <tr>
        <td>
        SQL-kald:
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
        DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display.">
        <Columns>
            <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Position" HeaderText="Position" SortExpression="Position" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Database1ConnectionString1 %>"
        ProviderName="<%$ ConnectionStrings:Database1ConnectionString1.ProviderName %>"
        SelectCommand="SELECT [Id], [Name], [Position] FROM [Persons]"></asp:SqlDataSource>
        </td>
        <td style="width: 142px">
          StoredProcedure-kald:<br />
          <asp:SqlDataSource ID="SqlDataSource2" runat="server" SelectCommandType="StoredProcedure" SelectCommand="StoredProcedure1"></asp:SqlDataSource>
            <asp:GridView ID="GridView2" runat="server" DataSourceID="SqlDataSource2">
            </asp:GridView> 
        </td>
      </tr>
    </table>

Men der sker intet ved kørsel. Den vil godt kompileres, men ved kørsel er siden bare blank ???
Avatar billede lifo Nybegynder
22. juni 2007 - 16:56 #5
der er mismatch i DataSorceID på gridView'en og din SqlDataSource

du har 2 gridview's den første har collonner det har den anden ikke og det erden anden som er bundet til din sqlDataSource
Avatar billede lifo Nybegynder
22. juni 2007 - 16:57 #6
ups jeg så forkert
Avatar billede cogitans Nybegynder
25. juni 2007 - 10:36 #7
Nu har jeg lavet denne stored procedure:

ALTER PROCEDURE dbo.StoredProcedure1
AS
SELECT * FROM Persons WHERE Position='Arbejder'
RETURN

Og hvis jeg vælger Execute ved højreklik, så returneres det ønskede i outputvinduet.

Når jeg så forsøger at kalde proceduren gennem en aspx-side, så bliver vinduet blot blankt. Koden er her:

<%@ Page Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="StoredProcedureCall.aspx.cs" Inherits="OpsamlingWeb.StoredProcedures.WebForm1" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Toolbar" runat="server">
<asp:SqlDataSource ID="SqlDataSource4" runat="server"
    SelectCommandType="StoredProcedure" SelectCommand="StoredProcedure1"></asp:SqlDataSource>
    <asp:GridView ID="GridView2" runat="server" DataSourceID="SqlDataSource4">
    </asp:GridView>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="Body" runat="server">
</asp:Content>

Hvorfor virker det ikke?
Avatar billede cogitans Nybegynder
25. juni 2007 - 11:42 #8
Nu har jeg fået det til at vrke. Jeg skulle åbenbart vælge en Express-connection inde i SQL-datasourcen. Jeg syntes, at den så lidt forkert ud, da den hed noget med "express". Men den gjorde tricket.
Avatar billede cogitans Nybegynder
25. juni 2007 - 21:56 #9
Ja, nu efter jeg har lavet en masse research på nettet, har jeg jo så efterhånden fået nogle eksempler til at virke.
Men jeg har jo ikke fået den store hjælp til det oprindelige spørgsmål herinde. Men den der trods alt er kommet tættest på noget, er Arne_v. Og da jeg har set, at jeg er blevet angivet som dårlig pointgiver, må jeg jo hellere lige være sikker, før jeg lukker spørgsmålet.
Arne_v : hvis du gerne vil have pointene, så får du dem?
Avatar billede arne_v Ekspert
01. juli 2007 - 02:42 #10
Du kan vel give mig halvdelen for SP oprettelses problematikken.
Avatar billede cogitans Nybegynder
17. juli 2007 - 12:39 #11
Here goes then...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester