BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.

Why doesn't the following work? My brains gone fuzzy...
Thanks!

proc sql;

   create table Table1

       (Account char(50) label="Transaction File",

        Count num label="Number of Records");

proc sql;

    insert into Table1

    set Account='Total Number of Records submitted', count=&row.

    set Account='Number of facility', count=&row1.

    set Account='Number of Primary Account', count=&row2

    set Account='Number of Secondary Financial Account', count=&row3

    set Account='Number of Secondary Statistical Account', count=&row4;

quit;

627  proc sql;

628      insert into Table1

629      set Account='Total Number of Records submitted', count=&row.

630      set Account='Number of facility', count=&row1.

631      set Account='Number of Primary Account', count=&row2

             -------

             22

632      set Account='Number of Secondary Financial Account', count=&row3

             -------

             22

ERROR 22-322: Syntax error, expecting one of the following: (, ',', SET.

633      set Account='Number of Secondary Statistical Account', count=&row4;

             -------

             22

ERROR 22-322: Syntax error, expecting one of the following: (, ',', SET.

633!     set Account='Number of Secondary Statistical Account', count=&row4;

                                                                           -

                                                                           22

ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string,

              a numeric constant, a datetime constant, a missing value, BTRIM, INPUT, MISSING,

              NULL, PUT, SUBSTRING, USER.

634  quit;

NOTE: The SAS System stopped processing this step because of errors.

NOTE: PROCEDURE SQL used (Total process time):

      real time           0.00 seconds

      cpu time            0.00 seconds

1 ACCEPTED SOLUTION

Accepted Solutions
Jagadishkatam
Amethyst | Level 16

I think the problem is with the macro variables not resolving at all.

I tried to give some values to the macro variables and it worked well. Please check the code below

333  %let row1=1;

334  %let row2=2;

335  %let row3=3;

336  %let row4=4;

337  %let row5=5;

338

339  proc sql;

340

341     create table Table1

342

343         (Account char(50) label="Transaction File",

344

345          Count num label="Number of Records");

NOTE: Table WORK.TABLE1 created, with 0 rows and 2 columns.

346

NOTE: PROCEDURE SQL used (Total process time):

      real time           0.02 seconds

      cpu time            0.03 seconds

347  proc sql;

348

349      insert into Table1

350

351      set Account='Total Number of Records submitted', count=&row1.

352

353      set Account='Number of facility', count=&row2.

354

355      set Account='Number of Primary Account', count=&row3.

356

357      set Account='Number of Secondary Financial Account', count=&row4.

358

359      set Account='Number of Secondary Statistical Account', count=&row5.;

NOTE: 5 rows were inserted into WORK.TABLE1.

360

361  quit;

NOTE: PROCEDURE SQL used (Total process time):

      real time           0.01 seconds

      cpu time            0.00 seconds

Thanks,

Jagadish

Thanks,
Jag

View solution in original post

2 REPLIES 2
ballardw
Super User

Is there any chance that &row1 is resolving to something other than a numeric?


Jagadishkatam
Amethyst | Level 16

I think the problem is with the macro variables not resolving at all.

I tried to give some values to the macro variables and it worked well. Please check the code below

333  %let row1=1;

334  %let row2=2;

335  %let row3=3;

336  %let row4=4;

337  %let row5=5;

338

339  proc sql;

340

341     create table Table1

342

343         (Account char(50) label="Transaction File",

344

345          Count num label="Number of Records");

NOTE: Table WORK.TABLE1 created, with 0 rows and 2 columns.

346

NOTE: PROCEDURE SQL used (Total process time):

      real time           0.02 seconds

      cpu time            0.03 seconds

347  proc sql;

348

349      insert into Table1

350

351      set Account='Total Number of Records submitted', count=&row1.

352

353      set Account='Number of facility', count=&row2.

354

355      set Account='Number of Primary Account', count=&row3.

356

357      set Account='Number of Secondary Financial Account', count=&row4.

358

359      set Account='Number of Secondary Statistical Account', count=&row5.;

NOTE: 5 rows were inserted into WORK.TABLE1.

360

361  quit;

NOTE: PROCEDURE SQL used (Total process time):

      real time           0.01 seconds

      cpu time            0.00 seconds

Thanks,

Jagadish

Thanks,
Jag

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 1448 views
  • 0 likes
  • 3 in conversation