Try this code
ALTER PROC [dbo].[Clinic_ServiceInsuranceList]
@serviceCode INT ,
@InsuranceID INT
AS
BEGIN
declare @sqlTextAllCount nvarchar(max);
set @sqlTextAllCount='
SELECT dbo.Service.Code,dbo.Service.Title,dbo.ActCostService.Cost,dbo.InsuranceServiceCost.Cost
FROM dbo.Service,dbo.ActCostService,dbo.InsuranceServiceCost,dbo.InsuraceCost
WHERE
[dbo].[Service].ID='+convert(nvarchar(10),@serviceCode)+' AND
dbo.ActCostService.ServiceID='+convert(nvarchar(10),@serviceCode)+' AND
dbo.InsuranceServiceCost.ServiceID='+convert(nvarchar(10),@serviceCode) +''
if(@InsuranceID <>0)
Set @sqlTextAllCount += ' And InsuraceCost.InsuraceID = ' + convert(nvarchar,@InsuranceID)
print @sqlTextAllCount
Execute sp_executesql @sqlTextAllCount
END