在执行storedproc时,是否可以将表(或表变量)作为storedproc的参数传递。如果是,那么如何。我需要一个例子。
请帮忙。
答案 0 :(得分:1)
在sql server 2005中,编号
您可以使用xmldocs或逗号分隔的字符串(使用拆分功能)
CREATE FUNCTION [dbo].[SplitString]
(
@String VARCHAR(8000) ,
@Delimiter VARCHAR(10)
)
RETURNS @RetTable TABLE(
String varchar(1000)
)
AS
BEGIN
DECLARE @i INT ,
@j INT
SELECT @i = 1
WHILE @i <= LEN(@String)
BEGIN
SELECT @j = CHARINDEX(@Delimiter, @String, @i)
IF @j = 0
BEGIN
SELECT @j = LEN(@String) + 1
END
INSERT @RetTable SELECT SUBSTRING(@String, @i, @j - @i)
SELECT @i = @j + LEN(@Delimiter)
END
RETURN
END
另见
passing-lists-to-sql-server-2005-with-xml-parameters
和
答案 1 :(得分:0)
在Oracle中,您可以使用TYPES和OBJECTS来实现此IIRC。你能不能使用CURSOR / LOOP吗?如果您这样做的原因是捕获动态数据?
CURSOR c_my_cursor IS
SELECT *
FROM my_table;
BEGIN
FOR x IN c_my_c LOOP
IF x.employeeID IS NULL THEN
.....
END IF;
END LOOP;
END;
答案 2 :(得分:0)
如果你不在SQL Server 2008上(你可以使用table-valued parameters),那么你可以从Erland的伟大文章中获得一些在存储过程之间共享数据的其他想法:
http://www.sommarskog.se/share_data.html
Erland也讨论了表值参数,并深入解释了为什么当前的实现(只读)不够好: