i have a stored procedure that works fine that i am converting to a function. this fails at declare. i can run the query from declare down the page and it returns expected results so that is working. i just can't figure out how to load this or execute it to be on database.
USE [VENDOR] GO /****** Object: StoredProcedure [dbo].[sp_LoadVendorMisMatch_STEP] Script Date: 5/14/2019 9:32:39 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[fn_LoadVendorMisMatch_STEP]() RETURNS ( AS BEGIN DECLARE @t1 TABLE ( IMS_pro_code [int] NOT NULL, IMS_Catalogue [varchar](80) NULL, IMS_Description [varchar](400) NULL, IMS_StockCode[varchar](20) NULL, IMS_SupplierCode [int] NULL, IMS_SupplierName [varchar](100) NULL, Comment [nvarchar](1000) NULL); DECLARE @s TABLE ( IMS_Catalogue [varchar](80) NULL, CU_Catalog [nvarchar](80) NULL, IMS_SupplierCode [int] NULL, IMS_SupplierName [varchar](100) NULL, IMS_Description [varchar](400) NULL, IMS_pro_code [int] NOT NULL, CU_Description [varchar](400) NULL, CU_SupplierCode [int] NULL) --Load all unknown products since last load INSERT INTO @t1 SELECT IMS_pro_code, IMS_Catalogue, IMS_Description, IMS_StockCode, IMS_SupplierCode, IMS_SupplierName, Comment FROM [Product_CostUpdate_Analysis] WHERE Reconciled = 'U' AND LoadedToMisMatch IS NULL GROUP BY IMS_pro_code, IMS_Catalogue, IMS_Description, IMS_StockCode, IMS_SupplierCode, IMS_SupplierName, Comment; --of the products loaded, check to see if we can identify any matches via special characters INSERT INTO @s SELECT a.[IMS_Catalogue] AS IMS_Catalog, c.CATALOG AS CU_Catalog, a.[IMS_SupplierCode] AS IMS_SupplierCode, a.[IMS_SupplierName] AS IMS_SupplierName, a.IMS_Description AS IMS_Description, a.[IMS_pro_code], c.DESCRIPTION AS CU_Description, c.[SUPPLIER CODE] AS CU_SupplierCode FROM [VENDOR].[dbo].[Product_CostUpdate_Analysis] a JOIN [VENDOR].[dbo].[Vendor_CU_Archive] c ON [dbo].RemoveSpecial(a.[IMS_Catalogue]) = [dbo].RemoveSpecial(c.[CATALOG]) AND a.IMS_SupplierCode = c.[SUPPLIER CODE] WHERE a.reconciled = 'U' AND LoadedToMisMatch IS NULL; --Update table to include a comment for any special characters UPDATE @t1 SET Comment = 'Check for special characters' WHERE IMS_pro_code IN(SELECT [IMS_pro_code] FROM @s); -- Update analysis to indicate we are loading them to STEP UPDATE pa SET pa.LoadedToMisMatch = GETDATE() FROM [Product_CostUpdate_Analysis] pa WHERE IMS_pro_code IN(SELECT IMS_pro_code FROM @t1); -- This is the list to load into STEP SELECT * FROM @t1 )