Sql 是否可以在INSERT语句中调用存储过程?
简而言之,我想做的是:Sql 是否可以在INSERT语句中调用存储过程?,sql,sql-server,sql-server-2008,stored-procedures,sql-insert,Sql,Sql Server,Sql Server 2008,Stored Procedures,Sql Insert,简而言之,我想做的是: CREATE PROCEDURE sp_insertingStuff @value1 AS INSERT INTO [my_table] (column1, column2) VALUES (@value1, execute sp_anotherSP) GO 我需要知道的是:是否可以从类似这样的INSERT语句中执行存储过程?如果有更好的方法,我愿意接受建议。我之所以需要这样做,是因为我需要运行一些IF语句来获取第二列的值。您不能在值部分执行sp
CREATE PROCEDURE sp_insertingStuff
@value1
AS
INSERT INTO [my_table] (column1, column2)
VALUES (@value1, execute sp_anotherSP)
GO
我需要知道的是:是否可以从类似这样的
INSERT
语句中执行存储过程?如果有更好的方法,我愿意接受建议。我之所以需要这样做,是因为我需要运行一些IF语句来获取第二列的值。您不能在值部分执行sp。您必须在插入之前执行并获取返回/输出值,如下所示
CREATE PROCEDURE sp_insertingStuff
@value1
AS
DECLARE @anotherValue INT
execute @anotherValue = sp_anotherSP
INSERT [my_table] (
column1,
column2
)
VALUES (
@value1,
@anotherValue
)
您不能在值
部分中执行sp。您必须在插入之前执行并获取返回/输出值,如下所示
CREATE PROCEDURE sp_insertingStuff
@value1
AS
DECLARE @anotherValue INT
execute @anotherValue = sp_anotherSP
INSERT [my_table] (
column1,
column2
)
VALUES (
@value1,
@anotherValue
)
在另一个sp中添加输出参数
及
DECLARE@Val
EXEC sp_anotherSP@Val输出
... 使用@val插入
在另一个sp中添加输出参数
及
DECLARE@Val
EXEC sp_anotherSP@Val输出
... 使用@val插入
执行第一个sp中insert语句上方的第二个sp
比如:
在第一个sp内insert语句上方执行第二个sp
比如:
提到的一个解决方案是添加一个输出参数。另一种方法是将存储过程重写为函数,只要存储过程尚未更新/插入/删除任何数据。提到的一种解决方案是添加输出参数。另一种方法是将存储过程重写为函数,只要存储过程尚未更新/插入/删除任何数据。是,这可以通过在INSERT sp中创建temp表来完成。
然后调用要调用的sp并将该值存储在临时表中,然后可以在sp中使用该临时表的值,最后删除该临时表。这可以通过在insert sp中创建临时表来完成。
然后调用要调用的sp并将该值存储在临时表中,然后可以在sp中使用该临时表的值,最后删除该临时表也许您不需要存储过程来完成所需的工作。在这方面我们无法帮助您,除非您提供一些关于您实际问题的详细信息。这些“IF语句”是否可以替换为CASE
表达式,因此,让逻辑成为声明性的而不是过程性的?千万不要将系统使用的前缀命名为存储过程sp_uu。也许你不需要存储过程来完成你想要的工作。在这方面我们无法帮助您,除非您提供一些关于您实际问题的详细信息。这些“IF语句”是否可以替换为CASE
表达式,因此,让逻辑成为声明性的而不是过程性的?永远不要命名系统使用的前缀存储过程。我将研究提供的其他一些答案,但这一个达到了要求的结果,谢谢。我将研究提供的其他一些答案,但这一个达到了要求的结果,谢谢。
CREATE PROCEDURE sp_insertingStuff
@value1
AS
declare @value2 int
exec @value2 = sp_anotherSP
INSERT [my_table] (
column1,
column2
)
VALUES (
@value1,
@value2
)
GO