<?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>topic Re: How to use user defined functions with PROC FEDSQL? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-user-defined-functions-with-PROC-FEDSQL/m-p/471077#M120616</link>
    <description>&lt;P&gt;This is generating the following error:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;ERROR: Access Violation occurred during PREPARE!&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 18 Jun 2018 13:53:51 GMT</pubDate>
    <dc:creator>tomcmacdonald</dc:creator>
    <dc:date>2018-06-18T13:53:51Z</dc:date>
    <item>
      <title>How to use user defined functions with PROC FEDSQL?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-user-defined-functions-with-PROC-FEDSQL/m-p/470675#M120454</link>
      <description>&lt;P&gt;I need regular expressions to validate a particular column and can't use PRXMATCH in PROC FEDSQL.&amp;nbsp; My solution has been to wrap it in a PROC DS2 package like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc ds2 scond=error;
	package regexp / overwrite=yes;
		method match( varchar re, varchar string ) returns integer;
			return prxmatch(re, string) &amp;gt; 0;
		end;
	endpackage;
	run;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And testing it on a sample dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;CODE class=" language-sas"&gt; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data foo;
    input id $12.;
    datalines;
20467400081
;
run;

proc fedsql;
    drop table bar force;
    select 
        id,
        regexp.match('/^[1-5](?!00000)\d{5}0(?!0000)\d{4}\w?(?:\s*)$/', id) as is_valid
    into bar
    from foo;
quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I get the following note:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;NOTE: Argument 1 to function prxmatch is invalid.&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;Clearly the regular expression is valid.&amp;nbsp; So just running a test function to see what's going on:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;proc ds2 scond=error;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;package testing / overwrite=yes;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;method echo ( varchar string ) returns varchar;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return string;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;endpackage;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;run;&lt;BR /&gt;quit;&lt;BR /&gt;&lt;BR /&gt;proc fedsql;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;drop table baz force;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select &lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;id,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;testing.echo('/^[1-5](?!00000)\d{5}0(?!0000)\d{4}\w?(?:\s*)$/') as test&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;into baz&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;from foo;&lt;BR /&gt;quit;&lt;BR /&gt;&lt;CODE class=" language-sas"&gt;&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;It creates this dataset:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;20467400081	/^[1-5](&lt;/PRE&gt;&lt;P&gt;So it is cutting it off at 8 characters.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can I tell SAS that the quoted string is a varchar and not a char?&amp;nbsp; In other words how can I use a string parameter for a function that exceeds 8 characters?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 15 Jun 2018 19:08:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-user-defined-functions-with-PROC-FEDSQL/m-p/470675#M120454</guid>
      <dc:creator>tomcmacdonald</dc:creator>
      <dc:date>2018-06-15T19:08:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to use user defined functions with PROC FEDSQL?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-user-defined-functions-with-PROC-FEDSQL/m-p/471034#M120609</link>
      <description>&lt;P&gt;It seems to work (although I do not understand your PRX string, but anyway I did not get an error message) if you change the input parameter definition of your package function, e.g.:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc ds2 scond=error;
	package regexp / overwrite=yes;
		method match( varchar(50) re, varchar(50) string ) returns integer;
			return prxmatch(re, string) &amp;gt; 0;
		end;
	endpackage;
	run;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 18 Jun 2018 11:24:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-user-defined-functions-with-PROC-FEDSQL/m-p/471034#M120609</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2018-06-18T11:24:11Z</dc:date>
    </item>
    <item>
      <title>Re: How to use user defined functions with PROC FEDSQL?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-use-user-defined-functions-with-PROC-FEDSQL/m-p/471077#M120616</link>
      <description>&lt;P&gt;This is generating the following error:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;ERROR: Access Violation occurred during PREPARE!&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jun 2018 13:53:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-use-user-defined-functions-with-PROC-FEDSQL/m-p/471077#M120616</guid>
      <dc:creator>tomcmacdonald</dc:creator>
      <dc:date>2018-06-18T13:53:51Z</dc:date>
    </item>
  </channel>
</rss>

