使用表类型参数和常规参数

时间:2015-05-10 11:12:22

标签: sql sql-server tsql stored-procedures

我想将一些列表插入带有一些附加参数的SQL服务器表中。像这样的东西

CREATE PROCEDURE SP_AddChosenSecurities
    @ProjectID INT, 
    @Securities BusinessValuationSecurityTblType READONLY

AS
BEGIN

    INSERT INTO TblBusinessValuationsSecurities @ProjectID, @Securities

END

BusinessValuationSecurityTblType是表类型参数

我该怎么办呢。

谢谢!

1 个答案:

答案 0 :(得分:3)

由于您的第二个参数是表值参数,因此您需要从中选择,例如来自常规表 - 如下所示:

CREATE PROCEDURE SP_AddChosenSecurities
    @ProjectID INT, 
    @Securities BusinessValuationSecurityTblType READONLY
AS
BEGIN
    INSERT INTO TblBusinessValuationsSecurities 
        SELECT @ProjectID, Col1, Col2, Col3
        FROM @Securities
END

这假设您在表值参数中有Col1, Col2, Col3,根据需要进行调整。 附注:您应该 从不 为您的存储过程使用sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实在将来的某个时候冒着名字冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免使用sp_并使用其他东西作为前缀 - 或者根本不使用前缀!