<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "Parameterübergabe an Stored Process in PROC STP" in CoDe SAS German</title>
    <link>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/299770#M2080</link>
    <description>&lt;P&gt;&lt;FONT face="times new roman,times"&gt;Hallo Liebe Community,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;ich versuche gerade einen Stored Process mit Parametern über PROC STP auszuführen. Bei der Übergabe von Parametern bekomme ich allerdings Fehler&amp;nbsp;in %_eg_WeherParam Macro (bzw. mit PROC SQL) , welche ich bis jetzt nicht lösen konnte. Hier ist der Quellcode:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Stored Process:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA WORK.INPUT;
INFILE datalines;
INPUT location_id location_name : $11.; 
datalines;
1 LOCATION_01
2 LOCATION_02
3 LOCATION_03
4 LOCATION_04
5 LOCATION_05
;;
RUN;

PROC SQL NOPRINT;

CREATE TABLE WORK.TEST AS 
SELECT * FROM WORK.INPUT WHERE 
%_eg_WhereParam(location_id, location, IN, TYPE=N )
;
RUN;

PROC REPORT DATA=WORK.TEST;
RUN;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;Der Parameter "Location" ist in einer statischen Liste definier (multiple values).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;Und hier Mein EG-Programm, welches den Stored Process ausführt:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;CODE class=" language-sas"&gt;PROC STP PROGRAM="/User Folders/..../SandBox" 

INPUTPARAM LOCATION="1" LOCATION="2"; 

RUN;
&lt;/CODE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;&lt;FONT size="3"&gt;Wenn ich es so ausführe, klappt alles, aber wenn ich nur ein Parameter übergebe kommt eine Fehlermeldung aus dem %eg_WhereParam Macro:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;CODE class=" language-sas"&gt;PROC STP PROGRAM="/User Folders/..../My Folder/SandBox"

INPUTPARAM LOCATION="1"; 

RUN;
&lt;/CODE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;Fehelermeldung:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;07 %_eg_WhereParam(location_id, location, IN, TYPE=N )

ISIN=("IN" = "IN")

MPRINT(_EG_WHEREPARAM): location_id IN 1

NOTE 139-205: Line generated by the macro function "UNQUOTE".

207 1

-

22

ERROR 22-322: Syntax error, expecting one of the following: (, SELECT.

NOTE: Line generated by the macro function "UNQUOTE".

207 1
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Auch folgender Code führt zum gleichen Fehler:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;PROC STP PROGRAM="/User Folders/..../My Folder/SandBox"

INPUTPARAM LOCATION;

RUN;
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;&lt;FONT size="3"&gt;Hat jemand eine Idee woran es liegen könnte?&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 21 Sep 2016 07:56:08 GMT</pubDate>
    <dc:creator>arial34</dc:creator>
    <dc:date>2016-09-21T07:56:08Z</dc:date>
    <item>
      <title>Parameterübergabe an Stored Process in PROC STP</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/299770#M2080</link>
      <description>&lt;P&gt;&lt;FONT face="times new roman,times"&gt;Hallo Liebe Community,&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times"&gt;ich versuche gerade einen Stored Process mit Parametern über PROC STP auszuführen. Bei der Übergabe von Parametern bekomme ich allerdings Fehler&amp;nbsp;in %_eg_WeherParam Macro (bzw. mit PROC SQL) , welche ich bis jetzt nicht lösen konnte. Hier ist der Quellcode:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Stored Process:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA WORK.INPUT;
INFILE datalines;
INPUT location_id location_name : $11.; 
datalines;
1 LOCATION_01
2 LOCATION_02
3 LOCATION_03
4 LOCATION_04
5 LOCATION_05
;;
RUN;

PROC SQL NOPRINT;

CREATE TABLE WORK.TEST AS 
SELECT * FROM WORK.INPUT WHERE 
%_eg_WhereParam(location_id, location, IN, TYPE=N )
;
RUN;

PROC REPORT DATA=WORK.TEST;
RUN;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;Der Parameter "Location" ist in einer statischen Liste definier (multiple values).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;Und hier Mein EG-Programm, welches den Stored Process ausführt:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;CODE class=" language-sas"&gt;PROC STP PROGRAM="/User Folders/..../SandBox" 

INPUTPARAM LOCATION="1" LOCATION="2"; 

RUN;
&lt;/CODE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;&lt;FONT size="3"&gt;Wenn ich es so ausführe, klappt alles, aber wenn ich nur ein Parameter übergebe kommt eine Fehlermeldung aus dem %eg_WhereParam Macro:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;CODE class=" language-sas"&gt;PROC STP PROGRAM="/User Folders/..../My Folder/SandBox"

INPUTPARAM LOCATION="1"; 

RUN;
&lt;/CODE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;Fehelermeldung:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;07 %_eg_WhereParam(location_id, location, IN, TYPE=N )

ISIN=("IN" = "IN")

MPRINT(_EG_WHEREPARAM): location_id IN 1

NOTE 139-205: Line generated by the macro function "UNQUOTE".

207 1

-

22

ERROR 22-322: Syntax error, expecting one of the following: (, SELECT.

NOTE: Line generated by the macro function "UNQUOTE".

207 1
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Auch folgender Code führt zum gleichen Fehler:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;PROC STP PROGRAM="/User Folders/..../My Folder/SandBox"

INPUTPARAM LOCATION;

RUN;
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="times new roman,times" size="3"&gt;&lt;FONT size="3"&gt;Hat jemand eine Idee woran es liegen könnte?&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 07:56:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/299770#M2080</guid>
      <dc:creator>arial34</dc:creator>
      <dc:date>2016-09-21T07:56:08Z</dc:date>
    </item>
    <item>
      <title>Betreff: Parameterübergabe an Stored Process in PROC STP</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/299776#M2081</link>
      <description>&lt;P&gt;Hallo &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/67878"&gt;@arial34﻿&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;zunächst sollte das PROC SQL meines Wissens mit einem "QUIT;" beendet werden, anstatt mit einem "RUN;". Das Quit beendet den SQL-Processor und verhindert, dass ggf. weitere Resourcen belegt werden, die nicht mehr belegt sein müssten.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Das Problem welches entsteht ist im Log mit folgender Zeile ersichtlich:&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;MPRINT&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;_EG_WHEREPARAM&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;: location_id &lt;SPAN class="token operator"&gt;IN&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ich arbeite nicht mit dem _eg_whereparam Marco, aber wie es scheint wird bei der Eingabe von nur einem Parameter nur die oben stehende Zeile generiert.&lt;/P&gt;
&lt;P&gt;Nach dem IN-Operator muss allerdings entweder eine Aufzählung in Klammern erfolgen, also in dem Beispiel "location_id IN (1)" oder eben ein select - "location_id IN select id from [...]"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* Funktioniert nicht: */
PROC SQL NOPRINT;
CREATE TABLE WORK.TEST AS 
SELECT * FROM WORK.INPUT WHERE 
location_id IN 1
;
QUIT;


/* Funktioniert: */
PROC SQL NOPRINT;
CREATE TABLE WORK.TEST AS 
SELECT * FROM WORK.INPUT WHERE 
location_id IN (1)
;
QUIT;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Mögliche Lösung wäre demnach entweder das Macro nicht zu verwenden oder davor abzuprüfen, wieviele Parameter geliefert werden. Wird nur ein Parameter geliefert ist statt dem "IN" vielleicht besser ein "EQ" (oder &lt;span class="lia-unicode-emoji" title=":grinsendes_Gesicht_mit_großen_Augen:"&gt;😃&lt;/span&gt; zu verwenden.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Beste Grüße&lt;/P&gt;
&lt;P&gt;mfab&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 08:18:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/299776#M2081</guid>
      <dc:creator>mfab</dc:creator>
      <dc:date>2016-09-21T08:18:51Z</dc:date>
    </item>
    <item>
      <title>Re: Parameterübergabe an Stored Process in PROC STP</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/299785#M2082</link>
      <description>Hallo arial34,&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;tatsächlich ist der vom Makro %_eg_whereParam() erzeugte Code falsch. Wenn&lt;BR /&gt;mehrere Parameter übergeben werden kommt ein korrekter IN-Clause heraus,&lt;BR /&gt;wird nur ein Parameter übergeben fehlen die Klammern um die IN Liste. Das&lt;BR /&gt;lässt sich durch folgende zusätzliche Zeile im STP herausfinden:&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;%Put NOTE: code is -&amp;gt; %_eg_WhereParam(location_id, location, IN, TYPE=N );&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;Zwei Parameter:&lt;BR /&gt;&lt;BR /&gt;NOTE: code is -&amp;gt; (location_id IN (                 1,                 1))&lt;BR /&gt;&lt;BR /&gt;Ein Paramter:&lt;BR /&gt;&lt;BR /&gt;NOTE: code is -&amp;gt; location_id IN 1&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;Der einfachste Workaround ist, immer mindestens zwei Werte für LOCATION&lt;BR /&gt;mitzugeben &amp;#150; die dürfen auch durchaus den gleichen Wert haben also z.B.&lt;BR /&gt;location=1 location=1,  der erzeugte Code sieht dann so aus:&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;NOTE: code is -&amp;gt; (location_id IN (                 1,                 1))&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;Funktioniert aber problemlos&amp;#133;&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;Hofffe das hilft weiter,&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;Viele Grüße,&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;Grischa&lt;BR /&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;BR /&gt;##- Please type your reply above this line. Simple formatting, no&lt;BR /&gt;attachments. -##</description>
      <pubDate>Wed, 21 Sep 2016 09:38:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/299785#M2082</guid>
      <dc:creator>GrischaPfister</dc:creator>
      <dc:date>2016-09-21T09:38:56Z</dc:date>
    </item>
    <item>
      <title>Re: Parameterübergabe an Stored Process in PROC STP</title>
      <link>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/300037#M2083</link>
      <description>Danke für die schnelle Antwort. Tatsächlich habe ich es jetzt über ein Zusastzmacro gelöst, welches die Anzah der Parameter überprüft und dann eg_WherPart mit einem EQ aufruft.</description>
      <pubDate>Thu, 22 Sep 2016 06:43:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/CoDe-SAS-German/Parameter%C3%BCbergabe-an-Stored-Process-in-PROC-STP/m-p/300037#M2083</guid>
      <dc:creator>arial34</dc:creator>
      <dc:date>2016-09-22T06:43:10Z</dc:date>
    </item>
  </channel>
</rss>

