Udostępnij za pośrednictwem


Przekazywanie parametrów do procedury składowanej programu SQL Server

W tym artykule przedstawiono przykład przekazywania parametrów do procedury składowanej programu SQL Server z programu Visual FoxPro.

Oryginalna wersja produktu: Visual FoxPro
Oryginalny numer KB: 247370

Podsumowanie

Istnieją dwa sposoby przekazywania parametrów do procedury składowanej przy użyciu programu SQLExec. Jednym ze sposobów, które działa we wszystkich wersjach programu Visual FoxPro, jest utworzenie polecenia SQL jako zmiennej ciągu. Zaletą tej metody jest to, że można sprawdzić ciąg i zobaczyć dokładnie, które polecenie SQL przekazujesz do zaplecza.

Drugi sposób polega na przekazaniu zmiennych Foxpro poprzedzonych znakami zapytania, jak w sparametryzowanym widoku. W programie Visual FoxPro w wersji 5.0 i nowszych wersjach można uzyskać wartości z procedury składowanej, które są zwracane jako parametry wyjściowe.

Więcej informacji

Wykonaj te kroki:

  1. Utwórz dwie procedury składowane w programie SQL Server (zobacz Książki online, aby uzyskać szczegółowe instrukcje). Mysp_ObjectList pobiera tylko tabelę SysObjects i zwraca wartość przekazywaną raz dla każdego rekordu w tabeli. W mysp_GetVersion opracowaliśmy nieco normalną procedurę znajdowania wersji serwera. Funkcja SELECT @@VERSION zwykle zwraca wersję programu SQL Server jako rekord w kursorze. W tym miejscu przypisujemy ten wynik do parametru wyjściowego procedury składowanej.

    CREATE PROCEDURE mysp_GetVersion @tcVersion Char(200) Output AS 
    SELECT @tcVersion = @@VERSION
    
    CREATE PROCEDURE mysp_ObjectList @tcParm1 CHAR(10) AS
    SELECT @tcParm1, name FROM sysobjects
    
  2. Utwórz nazwę DSN o nazwie SPParmTest w administratorze ODBC, który łączy się z bazą danych, w której utworzono powyższe procedury.

  3. Uruchom następujący kod w programie Visual FoxPro:

    *!* Error-checking is omitted for the purposes of this sample:
    *!* you should always check the return values from SQL Passthrough calls.
    lnConn = SQLCONNECT("SPParmTest")
    lcParm1 = "ReturnThis"
    lcParm2 = "Then This"*!* This is the first way, involving building a string 
    *!* containing the parameters.
    lcCommand = "exec mysp_ObjectList '" + lcParm1 + "'"
    =SQLEXEC(lnConn, lcCommand)
    BROWSE
    USE
    
    *!* This is the second way, passing the FoxPro variables directly to 
    *!* the SQL command. This will work in 3.0.
    lcCommand = "exec mysp_ObjectList ?lcParm2"
    =SQLEXEC(lnConn, lcCommand)
    BROWSE
    USE
    
    *!* To get a value back from a stored procedure, initialize the
    *!* output variable first. This won't work under 3.0.
    lcVersion = SPACE(200)
    lcCommand = "exec mysp_GetVersion ?@lcVersion" && Note the pass by reference.
    =SQLEXEC(lnConn, lcCommand)?lcVersion 
    
    =SQLDISCONNECT(lnConn) && clean up.