Sql 在初始化变量时调用存储过程
我试图调用另一个存储过程以获取返回值并将其分配给sql存储过程中声明的变量,但出现错误: Msg 4121,第16级,状态1,程序过程每日,第35行 找不到列接口、用户定义函数或聚合接口.proc_GetPIValueAverageTime,或者名称不明确 我试着用“EXECUTE”和“EXEC”替换前面的SELECT,我还不得不在末尾标记一些东西,但没有成功。我还将数据库名称放在接口部分的前面Sql 在初始化变量时调用存储过程,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我试图调用另一个存储过程以获取返回值并将其分配给sql存储过程中声明的变量,但出现错误: Msg 4121,第16级,状态1,程序过程每日,第35行 找不到列接口、用户定义函数或聚合接口.proc_GetPIValueAverageTime,或者名称不明确 我试着用“EXECUTE”和“EXEC”替换前面的SELECT,我还不得不在末尾标记一些东西,但没有成功。我还将数据库名称放在接口部分的前面 USE [OperationsView] GO /****** Object: StoredPro
USE [OperationsView]
GO
/****** Object: StoredProcedure [Interface].[proc_GetChemicalDaily]
Script Date: 1/27/2017 8:06:47 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [Interface].[proc_GetChemicalDaily]
-- Add the parameters for the stored procedure here
@ProductionDate As DateTime,
@Debug BIT = 1
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- pi variables
DECLARE @tag_in As varchar(50)
DECLARE @pi_server As varchar(50)
DECLARE @enddate As date
--forcast variables
DECLARE @FCChemGALPERMIN DECIMAL(18,4)
DECLARE @CAUSTICDAILYUSAGE DECIMAL(18,4)
--variance variables
--DECLARE @PriceVariance DECIMAL(18,4)
-- DECLARE @MTDChem$Ton DECIMAL(18,4)
SELECT @tag_in = 'I-FC-835'
SELECT @pi_server = 'valpi'
SELECT @endDate = DATEADD(DAY, 1, @productionDate)
SELECT @FCChemGALPERMIN = proc_GetPIValueAverageTime(@tag_in,
@ProductionDate, @endDate, @pi_server, @Debug)
if @FCChemGALPERMIN> .5
SELECT @CAUSTICDAILYUSAGE = @FCChemGALPERMIN*((18318/2000)*.5);
else
SELECT @CAUSTICDAILYUSAGE = 0;
-- Insert statements for procedure here
if @Debug = 1
begin
PRINT '-------------COST OF CAUSTIC-------------'
PRINT''
PRINT 'Caustic for production day ' + convert(varchar(50),@ProductionDate)
PRINT ''
PRINT 'Caustic usage: ' + convert(varchar(50),@CAUSTICDAILYUSAGE)
end
END
去掉括号,然后在@ProductionDate、@endDate、@pi_server、@debugh中尝试:EXEC@FCChemGALPERMIN=proc_GetPIValueAverageTime@tag_。此外,您可能希望使用接口限定该过程。proc_GetPIValueAverageTime如何返回值选择语句、返回语句、输出参数?这样调用它可能无法得到预期的结果。RETURN_值是一个int,用于返回一个指示执行状态的值。它不打算返回用户定义的值。如果希望从存储过程返回数据,应该使用输出参数。太好了!谢谢,我在SELECT上使用了EXEC,并使用了OUTPUT,去掉了括号。谢谢