mam tę tabelę terazJak zaktualizować kolumnę za pomocą parametru Numer_wiersza o innej wartości dla każdego wiersza?
CREATE TABLE [dbo].[DatosLegales](
[IdCliente] [int] NOT NULL,
[IdDatoLegal] [int] NULL,
[Nombre] [varchar](max) NULL,
[RFC] [varchar](13) NULL,
[CURP] [varchar](20) NULL,
[IMSS] [varchar](20) NULL,
[Calle] [varchar](100) NULL,
[Numero] [varchar](10) NULL,
[Colonia] [varchar](100) NULL,
[Pais] [varchar](50) NULL,
[Estado] [varchar](50) NULL,
[Ciudad] [varchar](50) NULL,
[CodigoPostal] [varchar](10) NULL,
[Telefono] [varchar](13) NULL,
[TipoEmpresa] [varchar](20) NULL,
[Tipo] [varchar](20) NULL,
CONSTRAINT [PK_DatosLegales] PRIMARY KEY CLUSTERED
(
[IdCliente] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)
muszę zaktualizować Kolumna IdDatoLegal. W tej chwili mam 80 wierszy na tym stole, więc muszę zaktualizować każdy wiersz o numerach 1, 2, 3 ... 79, 80.
Próbowałem proste kwerendy do procedur przechowywanych bez powodzenia w ogóle.
Mam tę procedurę przechowuje teraz:
ALTER PROCEDURE dbo.ActualizarDatosLegales
@RowCount int
AS
DECLARE @Inicio int
SET @Inicio = 0
WHILE @Inicio < @@RowCount
SET @Inicio += 1;
BEGIN
UPDATE DatosLegales SET IdDatoLegal = @Inicio WHERE (SELECT ROW_NUMBER() OVER (ORDER BY IdCliente) AS RowNum FROM DatosLegales) = @Inicio;
END
Zwraca tę wiadomość, kiedy go uruchomić
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
myślę, że to dlatego, że w podzapytania (SELECT ROW_NUMBER() OVER (ORDER BY IdCliente) AS RowNum FROM DatosLegales) zwraca 80 wierszy, w których powinien zwracać tylko jeden (ale za każdym razem powinien to być inny numer:
Czy wiesz, co muszę dodać do podzapytanie, aby działało? a przede wszystkim czy pętla i reszta procedury są prawidłowe?
góry dzięki
używasz SQL Server? – luchosrock
@luchosrock - Składnia, ograniczniki nawiasu kwadratowego i komunikat o błędzie wskazują SQL Server (chociaż prawdopodobnie Sybase, jeśli ma te same komunikaty o błędach, jak przypuszczam). –